robeno
15.02.13,11:20
Zdravím poraďákov
Problém spočíva v tom ako zmeniť zápis makra aby miesto príkazu napr. Range("L21").Select na základe ktorého sa v aktívnom zošite nastaví bunka na adrese L21 nastavila vždy iná bunka Row a Column, podľa toho, čo zadám do iných buniek
Príklad Makra:
Sheets("Hárok1").Select
x = Range("F4") ´do premennej X uloží údaj vo formáte čísla z bunky F4
y = Range("G4") ´do premennej y uloží údaj vo formáte čísla z bunky G4
Range("N10").Select ´označí a skopíruje bunku N10
Selection.Copy
Sheets("Sheet1").Select
Range("L21").Select
Selection.Paste
Sheets("Hárok1").Select
Ide o to, že keď nahradím v príkaze Range ("L21"). Selection príkazom Range ("RowXColumnY"). Selection tak to nefunguje a ja potrebujem aby sa v druhom zošite nastavil vždy na adresu RowX a ColumnY ktorá sa mení podľa údajov buniek F4 a G4
Ďakujem za všetky rady a podnetné nápady.
Robo.
PushCar
15.02.13,19:36
Riešenie:

Sub CisloRiadkaCisloStlpca()


Dim x As Integer
Dim y As Integer


Sheets("Hárok1").Select
x = Range("F4")
y = Range("G4")
Sheets("Sheet1").Cells(x, y).Value = Sheets("Hárok1").Range("N10").Value


End Sub
robeno
18.02.13,11:42
Ďakujem za radu
Už som vyriešil,,,síce svojsky, ale funguje a to som nedefinoval ani premenné stačilo formátovať bunky F4 a G4
Dim x As Integer
Dim y As Integer



x = Range("G4")
y = Range("F4")
Range("N10").Select
Selection.Copy
Sheets("Sheet1").Select
ActiveSheet.Cells(x, y).Select
ActiveSheet.Paste
Sheets("Hárok1").Select
Ešte raz ďakujem...určite to vyskúšam aj tvojou metódou.
PushCar
18.02.13,18:46
Za málo :)
Tvoja metóda je dobrá v tom, že keď si krokuješ makro tak vidíš, čo to robí. Keď ale spustíš časomieru tak zistíš, ktoré je rýchlejšie. V prípade dlhšieho makra, ktoré trvá aj pol hodinu je určite lepšie ho optimalizovať. Na to, ktorý kód v makre je rýchlejší slúži jednoduchá formulka:



Sub TrvanieKodu()
Dim MyTimer As Double
Dim x As Integer
Dim y As Integer


MyTimer = Timer
x = Sheets("Hárok1").Range("g4")
y = Sheets("Hárok1").Range("f4")
Sheets("Sheet1").Cells(x, y).Value = Sheets("Hárok1").Range("N10").Value
prva = Timer - MyTimer


MyTimer = Timer
x = Range("G4")
y = Range("F4")
Range("N10").Select
Selection.Copy
Sheets("Sheet1").Select
ActiveSheet.Cells(x, y).Select
ActiveSheet.Paste
Sheets("Hárok1").Select
druha = Timer - MyTimer


Range("B1") = prva
Range("B2") = druha


End Sub


Tvoj kod trva cca 0,016 optimalizovany cca 0,00000000000058.