Herbers Excel-Forum - das Archiv

mehrere Tabellen markieren über Array

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: mehrere Tabellen markieren über Array
von: MikeS

Geschrieben am: 16.03.2005 15:38:01
Hallo Leute,
ich möchte per VBA mehrere Tabellenblätter markieren, was mit dem Befehl
Sheets(Array("Tabelle1", "Tabelle2")).Select funktioniert.
Ich hole mir die Tabellennamen aus einer Listbox, in der alle markierten
Zeilen ausgelesen werden. Nun möchte ich einen String wie folgt verwenden.
Sheets(Array(strTabellen)).Select
Ich krieg aber die Schreibweise nicht zustande :o( und bitte um Hilfe.
Vielen Dank
MikeS
Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: u_
Geschrieben am: 16.03.2005 15:48:13
Hallo,
der Weg führt über 'Split'.
Sub test()
Dim strTab As String
strTab = "Tabelle1,Tabelle2,Tabelle3"
Sheets(Split(strTab, ",")).Select
End Sub

Gruß
Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: MikeS
Geschrieben am: 16.03.2005 16:00:39
Hallo u_,
leider funzt es bei mir nicht!?
Sub oder Funktion nicht definiert.
Split wird blau markiert
Ist das versionsabhängig?
Danke MikeS
Bild

Betrifft: noch offen
von: u_
Geschrieben am: 16.03.2005 16:32:35
Hallo,
entschuldigung, nicht auf die Version geachtet. Split gibt es in 97 nicht.
Gruß
Bild

Betrifft: AW: noch offen
von: MikeS
Geschrieben am: 16.03.2005 16:36:10
Danke Dir trotzdem.
Ciao MikeS
Bild

Betrifft: AW: noch offen
von: u_

Geschrieben am: 16.03.2005 16:48:28
Hallo,
ein wenig kompliziert, sollte aber gehen.
Sub test2()
Sheets(1).Select
Sheets(3).Select False
Sheets(4).Select False
Sheets(6).Select False
End Sub

Gruß
Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: K.Rola

Geschrieben am: 16.03.2005 16:40:07
Hallo,
''=====================================================
''Erforderliche controls:
''Eine Listbox mit Namen ListBox 1
''Commandbutton1
''Commandbutton2
''Commandbutton3
''Der Code muss ins Modul des userforms
Option Explicit
Dim aSh As Object
Private Sub CommandButton1_Click()
'Alle Blätter werden selektiert
Dim i As Long
With Listbox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i, 0)).Select False
End If
Next
End With
End Sub
Private Sub CommandButton2_Click()
'Auswahl wird aufgehoben
Dim i As Long
aSh.Select
With Listbox1
For i = 0 To .ListCount - 1
.Selected(i) = False
Next
End With
End Sub
Private Sub CommandButton3_Click()
'Alle ausgewählten werden selektiert
Dim i As Long
With Listbox1
For i = 0 To .ListCount - 1
Sheets(.List(i, 0)).Select False
Next
End With
End Sub
Private Sub UserForm_Activate()
'Blattnamen in die Listbox lesen
Set aSh = ActiveSheet
Dim sh As Object
With Listbox1
.Clear
For Each sh In Sheets
.AddItem sh.Name
Next
End With
End Sub

Gruß K.Rola

Der Fleiß ist die Wurzel aller Häßlichkeit.

Oscar Wilde


Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: MikeS

Geschrieben am: 16.03.2005 20:27:20
Hallo K.Rola,
danke für Deine Hilfe.
Hab Deinen Code in eine UserForm kopiert und die Steuerelemente angeordnet. Aber es hat sich der Fehlerteufel eingschlichen.
Markierst Du Tabelle1, rufst dann die UF auf, wählst dann im Listenfeld Tabelle2+3 und klickst dann auf Button1, sollten Tabelle2+3 selektiert sein (OHNE Tabelle1).
Tabelle1 bleibt aber weiterhin selektiert!?
Vielen Dank für Deine Mühe.
LG MikeS
Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: MikeS

Geschrieben am: 16.03.2005 20:27:52
Hallo K.Rola,
danke für Deine Hilfe.
Hab Deinen Code in eine UserForm kopiert und die Steuerelemente angeordnet. Aber es hat sich der Fehlerteufel eingschlichen.
Markierst Du Tabelle1, rufst dann die UF auf, wählst dann im Listenfeld Tabelle2+3 und klickst dann auf Button1, sollten Tabelle2+3 selektiert sein (OHNE Tabelle1).
Tabelle1 bleibt aber weiterhin selektiert!?
Vielen Dank für Deine Mühe.
LG MikeS
https://www.herber.de/bbs/user/19767.xls
Bild

Betrifft: AW: mehrere Tabellen markieren über Array
von: K.Rola

Geschrieben am: 16.03.2005 21:08:22
Hallo,
richtig, ist mir gar nicht aufgefallen.
''Erforderliche controls:
''Eine Listbox mit Namen ListBox 1
''Commandbutton1
''Commandbutton2
''Commandbutton3
''Der Code muss ins Modul des userforms
Option Explicit
Dim aSh As Object
Private Sub CommandButton1_Click()
'Alle ausgewählten werden selektiert
Dim i As Long
With Listbox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i, 0)).Select
Exit For
End If
Next
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i, 0)).Select False
End If
Next
End With
End Sub
Private Sub CommandButton2_Click()
'Auswahl wird aufgehoben
Dim i As Long
aSh.Select
With Listbox1
For i = 0 To .ListCount - 1
.Selected(i) = False
Next
End With
End Sub
Private Sub CommandButton3_Click()
'Alle Blätter werden selektiert
Dim i As Long
With Listbox1
For i = 0 To .ListCount - 1
Sheets(.List(i, 0)).Select False
Next
End With
End Sub
Private Sub UserForm_Activate()
'Blattnamen in die Listbox lesen
Set aSh = ActiveSheet
Dim sh As Object
With Listbox1
.Clear
For Each sh In Sheets
.AddItem sh.Name
Next
End With
End Sub

Gruß K.Rola

Der Fleiß ist die Wurzel aller Häßlichkeit.

Oscar Wilde


Bild

Betrifft: AW: nur eines noch...
von: Mike

Geschrieben am: 16.03.2005 21:53:18
Supi, so funktionierts prima, doch wie kann ich nun alle selektierten Blätter kopieren?
Da ich in der Firma Excel97 habe ist die Split-Funktion für mich nicht zu verwenden.
Wahrscheinlich in einer Schleife Blatt für Blatt ungefähr so:
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i, 0)).Copy
...
End If
Next
End With
Auf jeden Fall hast Du mir sehr geholfen.
Ciao MikeS
 Bild
Excel-Beispiele zum Thema "mehrere Tabellen markieren über Array"
Suche über mehrere Tabellen Mehrere Schaltflächen für ein Makro
Suchbegriff über mehrere Tabellenblätter suchen. Benutzerdefinierte SVERWEIS-Funktion über mehrere Bereiche
Druck aus mehreren Tabellenblättern auf eine Druckseite AutoFilter über mehrere Arbeitsblätter setzen
Daten von mehreren Blättern auf ein Druckblatt Prozentuale Erhöhung über mehrere Arbeitsblätter hinweg
Werte in mehreren Spalten sortieren Textreihe auf mehrere Spalten mit fester Seitenlänge verteilen