< návrat zpět
MS Excel
Téma: medzikroky makra
Zaslal/a steinhubl 28.7.2011 23:15
Chcel by som poziadat o pomoc pri skryti medzikrokov vypoctu makra. Som zaciatocnik vo VBA, doteraz som makra vytvaral nahravanim a nasledne jemnym doladovanim kodu. Jedna sa mi o nasledovne: Na Harku1 v stpci B a C mam 1024 dat z ktorych robim Fourierovu analyzu ktorej vysledky sa zapisu na harok 1 do stlpcov E a F. Nasledne na Harok3 v stlpci D mam vypocet, do ktoreho vstupuju hodnoty zo stlpcov E a F. Chcel by som vediet, ci existuje taka moznost vo VBA, ze po vykonani Fourierovej analyzy by sa mi jej vysledky nezapisovali do stlpcov E a F ale ostali by skryte niekde na pozadi alebo priamo vo vnutri VBA kodu a vysledkom tohto makra by boli len hodnoty v stlci D na Harok3. V prilohe posielam jednoduche makro (Module3 vo VBA). Potrebujem to kvoli tomu, ze tych Fourierovych analyz by som chcel robit aspon 30 a ked sa mi vysledky zapisuju do jednotlivych buniek, tak vypocet sa zbytocne predlzuje. Za vsetky vase odpovede vopred dakujem.
Příloha: 5618_ueberlappung.zip (190kB, staženo 17x)
Roman(29.7.2011 12:39)#005633 Do Application.run se nedá vstoupit a tento program si dělá sám chybář sám naplňuje data, jsem přesvědčen, že maximum času věnuje zpracování dat ne přenosu, ten je velmi rychlý a neprotahuje čas. Udělal jsem test na 30 analýz a netrvá to tak dlouho
Sub Makro1_signal()
Application.ScreenUpdating = False
Sheets("Data").Select
Range("a2:ad1025").ClearContents
Range("a2:ad1025").Formula = "=rand() * 100 - 50"
Sheets("Hárok3").Select
Range("D2:D1025").ClearContents
Sheets("Hárok1").Select
Range("E2:ai1025").ClearContents
Dim i As Integer
For i = 0 To 29
'rozsah = Range(Cells(2, i + 1), Cells(4097, i + 1))
Application.Run "ATPVBAEN.XLAM!Fourier", Sheets("Data").Range("A2").Offset(0, i).Resize(1024, 1) _
, Sheets("Hárok1").Range("A2").Offset(0, i + 4), False, False
Next i
Sheets("Hárok3").Select
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=(AVERAGE((IMABS(Hárok1!RC[1]))^2,(IMABS(Hárok1!RC[2]))^2))/(R2C2/2)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D1025")
'Range("D2:D4097").Select
Application.ScreenUpdating = True
End Subcitovat
steinhubl(30.7.2011 8:11)#005638 Velmi pekne dakujem Roman za pomoc, vyskusal som si to s Tvojim kodom, prisposobil som si ho este na svoje podmienky a ide to celkom slusne. Este raz moja velka vdaka
citovat