Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Befehl in mehreren Sheets ausführen

VBA Befehl in mehreren Sheets ausführen
16.03.2009 10:46:16
Tom
Hallo zusammen,
ich habe folgendes Problem:
Ich habe ein Makro aufgezeichnet wo er mir in den Sheets 1 - 24 (so habe ich sie genannt) Spalten ausblenden soll. Wärend der Aufnahme zeigt er mir auch in den Sheets an, das die gewünschten Spalten ausgeblendet sind. Wenn ich das Makro jetzt aber laufen lasse, dann führt er den Befehl nur im Sheet "1" aus. In den Blättern 2-24 sind die Spalten nur markiert aber nicht ausgeblendet.
Anbei der oberste Teil des Codes:

Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",  _
_
"16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("1").Activate
Columns("D:AA").Select
Selection.EntireColumn.Hidden = False
Columns("G:K").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10


Wenn ich Sheets(array("1", "2", usw)). activate angebe funktioniert es nicht.
Habt Ihr für mich eine Lösung wie ich im Code angebe, dass er die Blätter 1-24 aktiviert und nicht nur das Blatt "1"?
Danke für Eure Hilfe
LG
Tom

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Befehl in mehreren Sheets ausführen
16.03.2009 10:58:26
Tino
Hallo,
hier mal zwei Beispiele.
'Beispiel1 
Sub BestimmteTabellenAnsprechen1()
Dim sArea() As String
Dim A As Integer

'Tabellennamen entsprechend eintragen bzw. erweitern 
sArea = Split("1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24", ";")

For A = Lbound(sArea) To Ubound(sArea)
 Sheets(sArea(A)).Columns("D:AA").EntireColumn.Hidden = True
Next A

End Sub

'Beispiel2 
Sub BestimmteTabellenAnsprechen2()
Dim A As Integer

For A = 1 To 24
 Sheets(CStr(A)).Columns("D:AA").EntireColumn.Hidden = True
Next A

End Sub


Gruß Tino

Anzeige
AW: VBA Befehl in mehreren Sheets ausführen
16.03.2009 11:25:58
Tom
Hallo Tino,
erstmal vielen Dank für die Lösungen.
Ich habe mal den ganzen Code beigefügt, Wie bekomme ich deinen ersten Vorschlag für diese Anwendung umgesetzt?
Gruß
Tom

Sub Blätter_zwei_LR()
' Blätter_zwei_LR Makro
' Makro am 16.03.2009 von ... aufgezeichnet
'Tabellen anfertigen
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" _
, _
"16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("1").Activate
Columns("D:Z").Select
Selection.EntireColumn.Hidden = False
Columns("H:K").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
Range("H:K,O:R").Select
Range("O1").Activate
ActiveWindow.SmallScroll ToRight:=7
Range("H:K,O:R,V:Y").Select
Range("V1").Activate
Selection.EntireColumn.Hidden = True
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" _
, _
"16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("1").Activate
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Sheets("25").Select
ActiveWindow.ScrollWorkbookTabs Sheets:=1
Sheets(Array("25", "26", "27", "28", "29", "30", "31", "Gesamt")).Select
Sheets("25").Activate
Columns("D:AA").Select
Selection.EntireColumn.Hidden = False
Columns("H:K").Select
ActiveWindow.SmallScroll ToRight:=5
Range("H:K,O:R").Select
Range("O1").Activate
ActiveWindow.SmallScroll ToRight:=6
Range("H:K,O:R,V:Y").Select
Range("V1").Activate
Selection.EntireColumn.Hidden = True
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Sheets(Array("Kunden-Stammdaten", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",  _
_
"12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("Kunden-Stammdaten").Activate
Sheets(Array("25", "26", "27", "28", "29", "30", "31", "Gesamt", "Abschluss")).Select _
Replace:=False
ActiveWindow.SelectedSheets.Visible = False
ActiveWindow.SmallScroll Down:=18
Range("F42").Select
End Sub


Anzeige
AW: VBA Befehl in mehreren Sheets ausführen
16.03.2009 11:53:05
Tino
Hallo,
in der Zeile

sArea = Split("1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24", ";")


trägst Du Deine Tabellennamen getrennt durch ein Semikolon ein
In der Schleife werden alle Eintragungen im Area durchlaufen und
Deine wünsche auf jeder Tabelle einzeln abgearbeitet.
Im Beispiel wird die Spalte D bis AA ausgeblendet.


For A = Lbound(sArea) To Ubound(sArea)
Sheets(sArea(A)).Columns("D:AA").EntireColumn.Hidden = True
Next A


Gruß Tino

Anzeige
Zusatzfrage zu VBA Befehl in mehreren Sh...
16.03.2009 12:40:30
Lorenz
Hallo Tino!
Habe mich kurzerhand dazugemischt!?!
kannst du mir vielleicht verraten ob VAR 1 oder VAR 2 ("die deine") die bessere Lösung ist?
Besser in Bezug auf Performance Tempo ect...
VAR 1

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If InStr(1, "1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30. _
31.", Sh.Name)  0 Then
Columns("D:AA").EntireColumn.Hidden = True
end if
End Sub


oder so:
VAR 2
For A = 1 To 31
Sheets(CStr(A&".")).Columns("D:AA").EntireColumn.Hidden = True
Next A
Danke Lorenz

Anzeige
AW: Zusatzfrage zu VBA Befehl in mehreren Sh...
16.03.2009 13:12:47
Tino
Hallo,
Variante 1 ist wahrscheinlich schneller weil,
dieser nur auf der aktiven Tabelle angewendet wird.
Nachteil, angenommen ich will dies nur auf Tabellen mit den Namen 10,11,12 usw. anwenden, dann würde dieser auch auf einer Tabelle mit dem Namen 1 oder 2 angewendet werden,
also der Name muss immer einmalig in der Liste sein.
Variante 2 entspricht dem 2. Beispiel hier.
https://www.herber.de/forum/messages/1060634.html
Diese hat eben den Nachteil, die Tabellennamen müssen mit den Namen 1,2,3 usw. angelegt sein, kommt nun eine Tabelle mit dem Namen „Tabelle1“ dazwischen und ich benötige diese auch, kann ich diese Version in die Tonne treten.
Man könnte auch noch mit dem Index (Position) arbeiten, dafür müssen die Tabellen aber auch wieder in einer Reihenfolge stehen, sonst muss ich wieder irgendwelche Abfragen einbauen um nicht gewollte Positionen zu überspringen.
Im Beispiel von Tom, kommt auch "Kunden-Stammdaten", "Gesamt" u. "Abschluss" dazu.
Es kommt also immer auf den Anwendungsfall an, wie ich es benötige.
Gruß Tino
Anzeige
erledigt Zusatzfrage zu VBA Befehl in mehr...
16.03.2009 14:00:26
Lorenz
Hallo Tino!!
vielen, vielen Dank zu den Infos. Wenn das so ist, dann bleibe ich bei der InStr, da im meinem Fall die Blätter eindeutig nur 1x im WorkSheet vorkommen" 1. 2. 3. ect (mit Punkt im Blattname)
Danke Lorenz
AW: erledigt Zusatzfrage zu VBA Befehl in mehr...
16.03.2009 16:53:46
Tom
Hallo Tino,
danke für die weitere Antwort.
Leider bekomme ich den Code so nicht in mein Geschehen integriert. Da das "EINBLENDEN" (nicht ausblenden) nur der kleinste Teil der Anwendung ist und ich nicht weiß wie ich die Funktion in die anderen darauf folgenden Positionen eingebaut bekomme.
Ist aber nicht so tragisch. Ich werde nun den Schritt für jedes Tabellenblatt durchgehen und ihn aufzeichnen.
Gruß
Tom
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige