1.9k Aufrufe
Gefragt in Tabellenkalkulation von bage Einsteiger_in (41 Punkte)
Hallo Leute!
Ich benötige mal wieder eure Hilfe
Ich habe einen Teil eines Makros hier hingeschrieben,
nach dem einefügten Kommentar funktioniert die nacfolgende Zeile nicht
"Sheets("Blattname1").Select"
Zur erklärung:
Ich habe 2 gleiche Tabellen mit 24 Tabellenblättern
eine ohne Makro und eine mit Mako zur weiterverarbeitung.
Mit der Makrotabelle rufe ich die ohne Mkro auf und wenn die Tabellenblattnamen nicht übereinstimmen soll in der Tabelle ohne Makro das entsprechende Tabellenblatt aufgerufen werden.
Das klappt aber nicht.
Dehalb benötige ich eure Hilfe.
danke im voraus
bage

Sub Makro2()
Windows("Kraftstoff 2015.xlsm").Activate
Application.Volatile
blattname = Activesheet.Name

On Error Resume Next
Workbooks.Open Filename:="Abrechung Kraftstoff\2015\Kraftstoff 2015.xlsx"
Windows("Kraftstoff 2015.xlsx").Activate
Blattname1 = Activesheet.Name
Blattname1 = blattname
'Wenn anderes Arbeitsblatt die aktive Tabelle ist, dann Befehl in der nächsten Zeile

Sheets("Blattname1").Select


end sub

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Gerd,

dein Makro kann so nicht funktionieren, denn mit

Sheets("Blattname1").Select


willst du die Tabelle mit dem Namen "Blattname1" auswählen.

Wenn müsstest du das so schreiben:

Sheets(Blattname1).Select


Was du hiermit

Blattname1 = Activesheet.Name
Blattname1 = blattname


erreichen willst, ist mir allerdings schleierhaft, denn du weist der Variable "Blattname1" ja die Variable "blattname" zu; die Zuweisung des Namens des aktiven Tabellenblatts in der Zeile vorher geht somit ins Leere.

Warum machst du es dir denn so schwer. Es geht doch relativ einfach so:

Sub bage()

Dim blattname As String

blattname = Workbooks("Kraftstoff 2015.xlsm").ActiveSheet.Name

On Error Resume Next
Workbooks.Open Filename:="Abrechung Kraftstoff\2015\Kraftstoff 2015.xlsx"

Workbooks("Kraftstoff 2015.xlsx").Worksheets(blattname).Activate

End Sub


Dies setzt natürlich voraus, dass die Blattnamen wirklich identisch sind.
Ob der Pfad richtig ist kann ich natürlich nicht beurteilen, aber ich würde den Pfad vollständig angeben, z.B. "C:\Abrechung Kraftstoff\2015\Kraftstoff 2015.xlsx"

Gruß

M.O.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

z.b.

gruss nighty

Sub Datselect()
Dim Dpfad As String, Ddatei As String, Wks As String
Dpfad = "C:\Abrechung Kraftstoff\2015\"
Ddatei = "Kraftstoff 2015.xlsm"
Dsheet = "Blattname1"
If WkbExists("" & Ddatei) = False Then
If DateiExists(Dpfad & Ddatei) = True Then
Workbooks.Open Filename:=Dpfad & Ddatei
Else
MsgBox ("Datei nicht vorhanden")
End
End If
End If
If WksExists(Dsheet) = True Then
Worksheets(Dsheet).Activate
Else
MsgBox ("Worksheet nicht vorhanden")
End If
End Sub

Function DateiExists(sFile As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(sFile) = True Then DateiExists = True
End Function

Function WkbExists(sFile As String) As Boolean
On Error Resume Next
Workbooks(sFile).Activate
If Err = 0 Then WkbExists = True
End Function

Function WksExists(sFile As String) As Boolean
On Error Resume Next
Worksheets(sFile).Activate
If Err = 0 Then WksExists = True
End Function
0 Punkte
Beantwortet von bage Einsteiger_in (41 Punkte)
Hallo M.O.
Dein code funktioniert prima, manchmal denkt man eben zu kompliziert.
Ich habe in letzter Zeit auch nicht viel mit VBA gemacht, hatte andere Probleme.
Der Pfad war gekürzt, da es dienstlich ist.
Die Blattnamen sind auch identisch.
Vielen Dank und ein schönes Wochenende

bage
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ihr habt euch durch

On Error Resume Next

lahmgelegt

dadurch wurde der obige fehler und alle anderen ignoriert

gruss nighty
...