Díky :) Funguje super :) Sice bych raději přišla na to, co mám špatně ve svém kódu ale na to přijdu později. Teď spěchám. Dík moc :)
elninoslov napsal/a:
Makro čo som Vám dal v predošlej téme sedí presne na Váš súbor, len si ho skopírujte.
Zdravím, jsem začátečník a potřebuju vytvořit makro, které má vytvořit nový list a zkopírovat do něj tabulku z prvního listu, a pod něj tabulky z ostatních listů (už bez hlavičky), aby to bylo celé jako jedna tabulka, počet řádku se v jednotlivých tabulkách liší a sloupců to vybírá z ostatních tabulek jen tolik kolik jich je v první tabulce, ostatní případné sloupce vynechá, počet listů může být variabilní a počet sloupců v první tabulce také. Napsala jsem toto a překvapivě to nefunguje :) ani nevím, jestli to není úplně nějaký nesmysl a nemám to řešit úplně nějak jinak :(
V příloze je sešit s mým makrem.
Sub makro()
Dim ws As Worksheet
Worksheets(1).Copy Before:=Sheets(1)
Set ws = ActiveSheet
ws.Name = "tabulka"
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Dim e As Long
a = Worksheets.Count
Worksheets(1).Select
c = Columns.Count
d = Rows.Count
For list = 3 To a
For b = 1 To c
For e = 2 To 100
If Len(Text) = 0 Then
Exit For
End If
Worksheets(list).Select
Text = Cells(e, 1)
Worksheets(1).Select
Cells(d + 1, b) = Text
d = d + 1
Next e
Next b
Next list
End Sub
To jsem nevěděla, tak jsem si je řádně deklarovala, pořád nevím proč long, tak jsem si tak preventivně deklarovala všechny, hlavně potřebuju, aby to fungovalo, na tu chybu v cyklu jsem už přišla. Celé makro má vytvořit nový list a zkopírovat do něj tabulku z prvního listu, a pod něj tabulky z ostatních listů (už bez hlavičky), aby to bylo celé jako jedna tabulka, počet řádku se v jednotlivých tabulkách liší a sloupců to vybírá z ostatních tabulek jen tolik kolik jich je v první tabulce, ostatní případné sloupce vynechá, počet listů může být variabilní a počet sloupců v první tabulce také. Napsala jsem toto a samozřejmě to nefunguje :) ani nevím, jestli to není úplně nějaký nesmysl a nemám to řešit úplně nějak jinak :(
Sub makro()
Dim ws As Worksheet
Worksheets(1).Copy Before:=Sheets(1)
Set ws = ActiveSheet
ws.Name = "tabulka"
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Dim e As Long
a = Worksheets.Count
Worksheets(1).Select
c = Columns.Count
d = Rows.Count
For list = 3 To a
For b = 1 To c
For e = 2 To 100
If Len(Text) = 0 Then
Exit For
End If
Worksheets(list).Select
Text = Cells(e, 1)
Worksheets(1).Select
Cells(d + 1, b) = Text
d = d + 1
Next e
Next b
Next list
End Sub
Stalker napsal/a:
Za prvé si řádně deklaruj proměnné, a, b a c máš deklarovány jako Variant a d jako Integer
Zobraz si v editoru okno Locals ať vidíš jakých hodnot proměnné nabývají. Hlavně proměnná c (počet řádků). Být Tebou tak změním d na Long.
Taky si oprav tu podmínku.
If Len(Text) = O Then - Tohle není NULA, ale velké ó.
Díky:) Já jsem to teď přepsala takto a zase to nefunguje, pouze jeden cyklus (který kopíruje pod tabulku jeden řádek tabulky) je ok:
Sub makro()
Dim a, b, c, d As Integer
Worksheets(1).Select
b = Cells(1, Columns.Count).End(xlToLeft).Column
c = Cells(Rows.Count, "A").End(xlUp).Row
For a = 1 To b
For d = 1 To c
Text = Cells(d, a)
If Len(Text) = O Then
Exit For
End If
Cells(c + 1, a) = Text
Next d
Next a
End Sub
Stalker napsal/a:
Chyba je v deklaraci proměnné d viz
http://wall.cz/excel-navod/deklarace-promennych-a-prehled-datovych-typu-vba
protože c= rows.count > c = 1048576
Zdravím, nevěděl by někdo co je na tomto začátečnickém :) kódu špatně? Píše to overflow v šestém řádku (For d = 1 To c). Má to kopírovat tabulku pod sebe. Vážně netuším :(
Sub makro()
Dim a, b, c, d As Integer
Worksheets(1).Select
b = Columns.Count
c = Rows.Count
For a = 1 To b
For d = 1 To c
Text = cells(d, a)
If Len(Text) = O Then
Exit For
End If
cells(c + 1, a) = Text
Next d
Next a
End Sub
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.