Nejste přihlášen/a.
Dobrý den. Měl bych dotaz, zda by někdo nevěděl jestli by šlo tento vzorec z Makra zkrátit. Nebo jej zapsat jinak, ale kratší na počet znaků.
Sheets("novy").Activate
Range("B3:FD3").Select
Selection.Copy
Sheets(1).Activate
Range("B2").Select
ActiveSheet.Paste
Díky za rady a tipy.
dejte si pozor při ladění, at si tabulku nepoškodíte. Označení Sheets(1) znamená odkaz na první list zleva.
Takto napsané makro vám bude okopírovaná data vždycky házet do prvního listu zleva.
*
Sub Macro2()
Sheets("novy").Range("B3:FD3").Copy
Sheets(1).Activate
Range("B2").Select
Sheets(1).Paste
End Sub
Děkuji.
Ještě bych měl otázku, jaká je maximální velikost makra (excel 2007)? A čím je omezena? Počtem znaků, velikostí a tak.
Díky.
makro není nijak omezené ve velikosti, ale píše se tak krátké, aby
1/ pokud možno bylo vidět úplně celé
2/ vykonávalo jen jednu činnost.
Dlouhá makra, která vykonávají spoustu různých činností, se právem považují za školáckou chybu. Říká se jim špagetový kód, s takovými makry se špatně zachází a ještě hůř se opravují. Problém se řeší tak, že z hlavního řídícího makra voláte další makra a z těch dalších maker můžete volat ještě další makra atd.
Mrkněte na obrázek. Z prvního makra nahoře se volají další tři makra, která nastavují nějaké ovládací prvky. Kdybyste všechny ty tři zdrojáky napsal do toho horního makra, tak se za pár dní nevyznáte ve svém vlastním programu.
Já ten vzorec mám proměnlivý. Nejdřív podle buňky A2 naimportuje data do listu novy, pak nakopiruje data z listu novy na pozici B2 a list novy smaze. Poté podle A3 naimportuje data do listu novy a pak nakopiruje na pozici B3 a zas list novy smaze. A tak dale. Celkem jsem to chtěl asi 500x, ale stačilo by mi i 100x.
Ve sloupci A jsou vychozi data, tak nevim jak to vyresit jinak.
Jestli ale chcete jen kopírovat nějaké hodnoty, pak nemusíte nic vybírat, ani opakovaně vytvářet a mazat nové listy. Docela obyčejně použijte cyklus, který hodnoty přenese.
Není snadné zvládnout cykly. Ale jak je zvládnete, tak se před vámi otevřou nevídané obzory a excel začne dělat věci, o kterých normální uživatelé nemají ani tušení. Například kopírovat data nebo rovnou celé listy ze zamčených, zaheslovaných a neotevřených exceláckých souborů atd. Není špatné to umět, protože se dozvíte ledaco zajímavého.
Vytvořte si tabulku jakou mám já a zkuste, co dělají tato dvě makra.
*
Option Explicit
Sub Macro1()
Dim I As Integer
For I = 1 To 10
Range("A1").Offset(I, 1).Value = Range("A1").Offset(I, 0).Value
Next I
End Sub
Sub Macro2()
Dim I As Integer
For I = 1 To 10
Range("A1").Offset(I, 2).Value = Range("A1").Offset(I, 0).Value
Next I
End Sub
já se raději neptám kam se chcete vlomit. ale zde jsme na poradně a proto vám radím, raději toho nechte.
Takhle, mám sloupec kde je ičo a pomocí funkce xml chci naimporovat data do excelu z ARESu dávkově. Třeba 200 naráz. Víc ne.
Mám takovéto makro, které se opakuje a mění se cíl. Takže místo A2-F2 je A3-F3... Jenže pak to píše, že je vzorec dlouhý, tak jsem jej chtěl nějak zkrátit.
*
Sub test()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "ares"
Sheets("ares").Activate
ActiveWorkbook.XmlImport URL:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico="& Sheets(1).Range("A2").Value, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1")
Sheets(1).Activate
Sheets(1).Range("B2") = Sheets("ares").Range("AC3")
Sheets(1).Range("C2") = Sheets("ares").Range("BG3")
Sheets(1).Range("E2") = Sheets("ares").Range("BF3")
Sheets(1).Range("F2") = Sheets("ares").Range("FD3")
Sheets("ares").Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = FaTruelse
End Sub
Vlomit se nechci nikam, jen chci aktualizovat vlastní databázi za pomoci IČO. Žádnou z podmínek neporušuji a jsem si jich vědom. Nechci dělat žádné hromadné útoky. Stačí mi tak 200 - 300 dotazů na jejich databázi mimo špičku. Přesto děkuji.
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.