Tabulka bude obsahovat vždy proměnlivý počet sloupců.
Omlouvám se za neupřesněné zadání ...

Kód: Vybrat vše
Dim SS_list As String, Line As String
Set SS_list = Worksheets("Main").Range("G3").Value
Set Line = Worksheets("Main").Range("H3").Value
Kód: Vybrat vše
Option Explicit
Sub Ukazka()
Dim Wbk As Workbook
Dim SS_List As Worksheet
Dim MyRow As Range
Dim JmenoListu As String
'objekt sesit
Set Wbk = ThisWorkbook
Debug.Print Wbk.Name
'nebo
Set Wbk = ActiveWorkbook
Debug.Print Wbk.Name
'objekt list
Set SS_List = ActiveWorkbook.Worksheets("list1")
Debug.Print SS_List.Name
' nebo: nazev listu
Set SS_List = Wbk.Worksheets("list1")
Debug.Print SS_List.Name
' nebo: nazev listu v promenne
JmenoListu = "list1"
Set SS_List = Wbk.Worksheets(JmenoListu)
Debug.Print SS_List.Name
'nebo: list prvni zleva v zobrazeni Excelu
Set SS_List = Wbk.Worksheets(1)
Debug.Print SS_List.Name
'nebo: objekt List1
Set SS_List = List1
Debug.Print SS_List.Name
' radek
Set MyRow = SS_List.Range("A5:AA5")
Debug.Print MyRow.Address(0, 0)
End Sub
Kód: Vybrat vše
Option Explicit
Sub Ukazka()
Dim Wbk As Workbook
Dim SS_List As Worksheet
Dim MyRow As Range
Dim JmenoListu As String
Dim JmenoListuBunka As Range
Dim JmenaListuBlok As Range, Cll As Range
'objekt sesit
Set Wbk = ThisWorkbook
Debug.Print Wbk.Name
'nebo
Set Wbk = ActiveWorkbook
Debug.Print Wbk.Name
'objekt list
' nazev listu: list1
Set SS_List = ActiveWorkbook.Worksheets("list1")
Debug.Print SS_List.Name
' nebo: nazev listu: list1
Set SS_List = Wbk.Worksheets("list1")
Debug.Print SS_List.Name
' nebo: nazev listu v promenne
JmenoListu = "list1" ' nazev listu do promenne
Set SS_List = Wbk.Worksheets(JmenoListu)
Debug.Print SS_List.Name
'nebo: list prvni zleva v zobrazeni Excelu
Set SS_List = Wbk.Worksheets(1)
Debug.Print SS_List.Name
'nebo: objekt list: List1
Set SS_List = List1
Debug.Print SS_List.Name
' nazev listu je v List3!D4
Set JmenoListuBunka = Wbk.Worksheets("list3").Range("d4") ' definice bunky s nazvem
Set SS_List = Wbk.Worksheets(JmenoListuBunka.Value)
Debug.Print SS_List.Name
' nebo totez jinak
With Wbk
Set SS_List = .Worksheets(.Worksheets("list3").Range("d4").Value)
End With
Debug.Print SS_List.Name
' jmena listu jsou v List3!D4:D5, v D5 je neplatne
Set JmenaListuBlok = JmenoListuBunka.Resize(2, 1)
For Each Cll In JmenaListuBlok.Cells
With Wbk
On Error Resume Next ' osetreni chyby
Set SS_List = .Worksheets(Cll.Value)
If Err.Number <> 0 Then GoTo ErrHandler
On Error GoTo 0
End With
Debug.Print SS_List.Parent.Name; " "; SS_List.Name
Pokracovat:
Next Cll
Debug.Print
' radek
Set MyRow = SS_List.Range("A5:AA5")
Debug.Print MyRow.Address(0, 0)
' odstranit objektove promenne
Set JmenoListuBunka = Nothing
Set JmenaListuBlok = Nothing
Set Cll = Nothing
Set MyRow = Nothing
Set SS_List = Nothing
Set Wbk = Nothing
Exit Sub
ErrHandler:
Debug.Print "Chyba v zadani nazvu listu"
GoTo Pokracovat
End Sub
V případě že by hodnota na list2 ve sloupci "A" nebyla, tak vložit na první volný řádek
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů