Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
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

Namen der Tabllenblätter durchsuchen

Namen der Tabllenblätter durchsuchen
10.05.2017 08:05:50
FishermensFriend
Hallo zusammen,
ich habe schon einige Foren durchsucht, bin bisher aber nicht fündig geworden.
Würde mich freuen wenn ihr mir helfen könnt :)
In meiner Datei gibt es ca. 20 Tabellenblätter mit Listen, die alle gleich aufgebaut sind. Mit einem Makro werden die Tabellen jetzt konsolidiert, das klappt auch wunderbar. Die konsolidierten Listen beginnen alle mit "WNV" oder "54.". Die Konsolidierung soll vor die Listen geschrieben werden, also vor das erste Tabellenblatt, das mit "WNV" bzw. "54." beginnt. Da hin und wieder neue WNV-Tabellen hinzukommen, muss das ganze regelmäßig aktualisiert werden.
Folgendermaßen habe ich es ausprobiert, funktioniert aber nicht:

Sub Konsolidierung()
Dim Ws As Worksheet
Dim Existens As Boolean
Dim Bereich As Range
Dim strLC As String
Dim g, i As Integer
'Wenn bereits eine Konsolidierung existiert, Inhalte löschen um aktuelle Version zu erstellen
For g = 1 To Worksheets.Count
If Worksheets(g).Name = "Konsolidierung" Then
Worksheets("Konsolidierung").Cells.Clear
Set Ws = Worksheets("Konsolidierung")
Existenz = True
End If
Next
'Neues Tabellenblatt erstellen, wenn es noch nicht existiert
If Not Existenz Then
Set Ws = Worksheets.Add
Ws.Name = "Konsolidierung"
End If
'Vor die Vorschriften (deren Bezeichnung mit "WNV" oder "54." beginnt)schieben
Ws.Move before:=InStrB(Worksheets, "WNV", "54.") 
Ws.Visible = False
For i = 2 To Worksheets.Count
With Worksheets(i).UsedRange
strLC = .Cells(.Rows.Count, .Columns.Count).Address
Set Bereich = .Range("A2:" & strLC)
Bereich.Copy Destination:= _
Ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End With
Next i
End Sub

Außerdem würde ich gerne die Tabllenblätter (deren Bezeichnung mit "WNV" oder "54." beginnt) mit Klick auf einen Button verstecken lassen. Kann man das ebenfalls mit InStr() lösen?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen der Tabllenblätter durchsuchen
10.05.2017 08:31:04
ChrisL
Hi
Hier ein Vorschlag...
Sub tt()
Dim WS As Worksheet
Dim iWS As Integer
If WSCheck("Konsolidierung") > 0 Then
Set WS = Worksheets("Konsolidierung")
WS.Cells.Clear
Else
Set WS = Worksheets.Add
WS.Name = "Konsolidierung"
End If
iWS = WorksheetFunction.Min(WSCheck("WNV*"), WSCheck("54.*"))
If iWS = 0 Then
MsgBox "Kein Blatt WNV oder 54. vorhanden."
Else
WS.Move Before:=Worksheets(iWS)
End If
' usw.
End Sub

Private Function WSCheck(strWSName As String) As Integer
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name Like strWSName Then
WSCheck = i
Exit Function
End If
Next i
End Function

cu
Chris
Anzeige
AW: Namen der Tabllenblätter durchsuchen
11.05.2017 16:44:33
FishermensFriend
Tausend Dank für die schnelle Hilfe lieber Chris!
Es funktioniert super und ich bin begeistert, mit wie wenig Code man das Problem lösen kann. Danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige