Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blattname in Makro aus einer Liste

Blattname in Makro aus einer Liste
08.03.2021 16:09:05
Raeder
Hallo VBA-Experten,
es geht um folgende Herausforderung: Ich habe mir persönlich in Excel ein kleines Buchhaltungsprogramm gestrickt. Das hätte ich zwar auch einfacher irgendwo anders herbekommen, hatte aber Spaß dran, es zu bauen. Die gesamte Arbeitsmappe besteht aus insgesamt 26 Arbeitsblättern, der größte Teil davon sind die verschiedenen Konten. Ich habe mir schon einige Makros gestrickt, die z. B. die Umsätze der einzelnen Konten nach beschriebenen Zeilen filtert (alos ohne leere), damit beim Ausdruck nur die beschriebenen Zeilen angesprochen werden. Am Ende funktioniert dass alles recht stabil und befüllt auch die Jahresendbilanzen perfekt.
Wenn ich allerdings den Namen eines Tabellenblattes ändern will/muss, dann muss ich den neuen Blattnamen in allen Makros anpassen, was zwar kein so großen Problem, aber am Ende eher unbequem und fehlerbehaftet ist. Ich habe nun folgende Idee bzw. Vorstellung: Ich würde gerne den Blattnamen für das Makro aus einer Tabelle in einem ganz bestimmten Auswahlblatt übernehmen, in dem die bestehenden Blattnamen in einer Liste aufgeführt werden. Ändert sich jetzt ein Blattname, dann müsste ich den nur noch in der Tabelle und nicht mehr in allen Makros ändern.
Sub sortieren()
' Filter1 Makro
Sheets("Kasse").Select
ActiveSheet.Unprotect
ActiveSheet.Range("$A$3:$A$1503").AutoFilter Field:=1, Criteria1:=""
Range("A1").Select
End Sub
Ich stelle mir nun vor, dass ich den Wunsch, in das Blatt "Kasse" zu gelangen, über die Auswahlliste realisieren kann, die im Blatt Auswahl vorhanden ist (z. B. Sheets("=B14 Blatt Auswahl")..Gibt es diese Möglichkeit überhaupt und wenn ja, wie müsste das Makro aussehn? Ich bin kein VBA-Spezialist und habe mir die Makros durch Aufzeichnungen gestrickt. Ich verwende Office 2007 in Windows 10 64bit.
Schon jetzt vielen Dank für jede Hilfe
Alexander

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattname in Makro aus einer Liste
08.03.2021 16:27:18
UweD
Hallo
ungetestet

Sub sortieren()
Dim Blatt As String
Blatt = Sheets("Auswahl").Range("B14")
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1503").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
End With
End Sub

LG UweD

AW: Blattname in Makro aus einer Liste
08.03.2021 17:44:20
Raeder
Hallo UweD,
genialer Tipp und scheinbar so einfach, wenn man weiß wie es geht! Vielen Dank. Jetzt muss ich dies nur noch mit einer Vielzahl von Konten probieren, also das Makro entsprechend vergrößern. Ich gehe aber mal davon aus, dass es dann immer noch funktioniert. Melde mich dann noch einmal.
Viele Grüße
Alexander

Anzeige
würdest du bitte....
08.03.2021 16:44:38
Werner
Hallo,
...deine Beiträge in den verschiedenen Foren untereinander verlinken.
Gruß Werner

AW: Blattname in Makro aus einer Liste
08.03.2021 17:12:57
Piet
Hallo
hier zwei Makros, das erste zum auflisten deiner Tabellen in ein beliebiges Blatt. Ich nahm "Kasse" und zum Testen Zeile 2 in Spalte B. Deinen Tabellen Namen bitte in der With Klammer angeben, falls du "Kasse" aendern willst. Die Zeile und Spalte zum auflisten kannst du selbst festlegen.
Das zweite Makro laedt den Tabellen Namen aus der Liste zurück und Selektiert dir zur Demo jede Tabelle einzeln. Dieses zurückladen musst du in deinen Code einbauen. Aenderst du Zeilen oder Spalten im 1. Code, musst du sie auch im 2. Code gleichsetzen. Sonst klappt der Code nicht!
mfg Pşet
Option Explicit
Dim j As Integer, z As Integer
Dim Sht As String   'Blattname
'Makro zum alle Tabellen auflisten
'Bereich ist variable, selbst festlegen
Sub Tabellen_auflisten()
With Worksheets("Kasse")
z = 2 '1.Zeile beim auflisten
For j = 1 To Worksheets.Count
If Worksheets(j).Name  .Name Then
.Cells(z, "B") = Worksheets(j).Name
z = z + 1
End If
Next j
End With
End Sub
'Makro zum Tabellen Namen zürückladen
Sub Test_Tabellenliste()
With Worksheets("Kasse")
z = 2 '1.Zeile beim zurückladen
For j = 1 To Worksheets.Count
Sht = .Cells(z, "B").Value
Worksheets(j).Select
z = z + 1
MsgBox Sht
Next j
End With
End Sub


Anzeige
AW: Blattname in Makro aus einer Liste
08.03.2021 18:56:16
Raeder
Hallo Piet,
momentan arbeite ich gerade an dem Vorschlag von Uwe, der zumindest beim Bezug auf eine Zelle im Blatt "Auswahl" funktioniert hat. Aktuell bekomme ich bei beim Ende mit
Sub sortieren()
' Filter1 Makro
Dim Blatt As String
Blatt = Sheets("Auswahl").Range("B9")
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Blatt = Sheets("Auswahl").Range("B14")
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Blatt = Sheets("Auswahl").Range("B21")
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Blatt = Sheets("Auswahl").Range("B22")
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
die Meldung "End with" erwartet. Schreibe ich aber End With ans Ende, dann will er End Sub . krieg ich momentan nicht auf die Reihe.
Deine Codes habe ich noch nicht wirklich verstanden, trotzdem vielen Dank dafür. Vielleicht komme ich da noch mal auf dich zurück.
Gruß
Alexander

Anzeige
AW: Blattname in Makro aus einer Liste
08.03.2021 19:40:16
UweD
Hallo
Das macht man über eine Schleife.
Sehe ich mir morgen an.

AW: Blattname in Makro aus einer Liste
09.03.2021 09:06:01
UweD
Hallo
Wie geschrieben über Schleife möglich.
Die betroffenen Zellen kannst du am Anfang definieren.

Sub sortieren()
Dim Arr, z, Blatt As String
Arr = Array("B14", "B21", "B22", "B29") 'usw
For Each z In Arr
Blatt = Sheets("Auswahl").Range(z)
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Next
End Sub
LG UweD

Anzeige
AW: Blattname in Makro aus einer Liste
09.03.2021 17:25:04
Raeder
Hallo Uwe,
das mit der Schleife war ein guter Tipp. Kann es sein, dass diese Schleife auf 8 Bezüge (hier B21, B22 usw.) gegrenzt ist? Das Makro mit 8 Bezügen (also B2 bis B9) funktioniert einwandfrei, sobald ich einen 9. hinzufüge (also B10) wird beim Ausführen "Debuggen" angezeigt und die Zeile "Blatt = Sheets("Auswahl").Range(z)" ist gelb unterlegt.
Sub Test()
' Test Makro
Dim Arr, z, Blatt As String
Arr = Array("B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", B10)
For Each z In Arr
Blatt = Sheets("Auswahl").Range(z)
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Sheets("Vorfälle").Select
Range("B3").Select
Next
End Sub
Hast du da eine Lösung?
Danke und Gruß
Alexander

Anzeige
AW: Blattname in Makro aus einer Liste
09.03.2021 20:00:38
UweD
Hallo
Beim letzten B10 fehlen die Anführungszeichen
Lieben Gruß UweD

AW: Blattname in Makro aus einer Liste
10.03.2021 17:46:49
Raeder
Hallo UweD,
sorry, blöd von mir. Jetzt sieht das Makro wie folgt aus:
Sub Test()
' Test Makro
Dim Arr, z, Blatt As String
Arr = Array("B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", " _
B14", "B15", "B16", "B17", "B18", "B19", "B20", "B21", "B22")
For Each z In Arr
Blatt = Sheets("Auswahl").Range(z)
With Sheets(Blatt)
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Sheets("Vorfälle").Select
Range("B3").Select
Next
End Sub
Beim Ausführen arbeitet es die ersten 8 Anweisungen (also B2 bis B9) ab, dann kommt debuggen und die Zeile "With Sheets(Blatt)" ist gelb unterlegt. Was mache ich falsch? Ich würde dir die Datei ja gerne zur Verfügung stellen, sie ist aber für das Upload zu groß (2,3 MB). Wenn du willst, schicke ich sie dir gerne an deine E-Mail-Adresse. Unter https://www.herber.de/bbs/user/144636.png findest du den Inhalt des Blattes Auswahl.
Danke und Gruß
Alexander

Anzeige
AW: Blattname in Makro aus einer Liste
11.03.2021 15:07:50
UweD
HAllo
also bei mir werden mehr als 8 durchlaufen.


Wenn der Bereich aber so wie dargestellt zusammenhängt, würde ich das ganz anders machen.
- In B2:B22 stehen die relevanten Blattnamen
- Es werden aber alle Blätter durchlaufen und, wenn der Name in der Liste ist, läuft der Code ab.

Sub Test()
Dim TB, Rng As Range
Set Rng = Sheets("Auswahl").Range("B2:B22")
For Each TB In Worksheets
'ist der Blattname in B2:B22 aufgelistet
If WorksheetFunction.CountIf(Rng, TB.Name) > 0 Then
With TB
.Select
.Unprotect
.Range("$A$3:$A$1003").AutoFilter Field:=1, Criteria1:=""
.Range("A1").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End If
Sheets("Vorfälle").Select
Range("B3").Select
Next
End Sub
LG UweD

Anzeige
AW: Blattname in Makro aus einer Liste
12.03.2021 20:10:43
Raeder
Halllo UweD,
ganz herzlichen Dank für das neue Makro, es funktioniert jetzt einwandfrei. Ich werde bestimmt noch öfter Fragen in diesem Forum stellen, du hast es aber wirklich drauf, was VBA angeht.
Viele Grüße
Alexander

AW: Blattname in Makro aus einer Liste
09.03.2021 11:30:41
UweD
Hallo
Das macht man über eine Schleife.
Sehe ich mir morgen an.

dass das Problem hier....
08.03.2021 18:16:36
Werner
Hallo,
...gelöst wurde, kann man im VBA-Forum auch mitteilen - muss man deiner Auffassung nach aber nicht.
Im VBA-Forum könnte man sich auch für angebotene Hilfe bedanken - muss man deiner Auffassung nach aber wohl auch nicht.
Crossposting ist doch wirklich was schönes.
Gruß Werner

Anzeige
AW: dass das Problem hier....
08.03.2021 18:35:47
Raeder
Hallo Werner,
sorry, wenn ich dich verwirrt habe. Ich bin neu im Forum und kämpfe etwas mit der Technik. Allerdings hatte ich mich direkt bei Uwe bedankt und war der Meinung, dass dieser Beitrag für alle ersichtlich war. Außerdem hatte ich geschrieben, dass ich mich noch einmal melde, wenn der Lösungsvorschlag auch beim größeren Makro (mit Bezug auf viele Zellen) funktioniert. Da bin ich noch dran, denn ich habe Probleme.
Wie verknüpfe ich verschiedene Foren? Ja, ich hatte die Frage auch noch in einem 2. Forum geschrieben, weiß aber nicht, wie man die verknüpft. Du tust mir also etwas unrecht.
Viele Grüße
Alexander
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige