PDA

Vollständige Version anzeigen : Blattname in Variable speicher und danach benutzen


Silvan80
06.07.2015, 17:20
Hallo zusammen

Eigentlich total logisch uns simpel. Weiss jedoch nicht warum das nicht funzt.
Ich speichere einen Tabellenname in einer Variable:

blatt2 = ActiveSheet.Name 'funzt ohne Probleme

danach möchte ich mit der Variable die Tabelle zu einem späteren Zeitpunkt selektieren bzw mit einer Schlaufe eine Datenreihe abarbeiten:

Sheets(blatt2).Cells(Row.Count, 2).End(xlUp).Row

Es kommt immer der Fehler Laufzeitfehler 424, Objekt erforderlich.
Verstehe nicht warum das nicht geht. Jmd eine Idee?

Gruss
Silvan

Hajo_Zi
06.07.2015, 17:27
Sheets(blatt2).Cells(Row, Selection.End(xlToRight)).Select

Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
<a href="http://hajo-excel.de/select.htm" title="Hinweise zu select usw." >Hinweise zu select usw. Hajo-Excel.de</a>
<a href="http://www.online-excel.de/excel/singsel_vba.php?f=61." >Hinweise zu select usw. Online-Excel.de</a>
<a href="http://www.online-excel.de/excel/singsel_vba.php?f=78." >Hinweise zu select usw. Online-Excel.de</a>

Ich würde einer Variablen nicht den gleichen Namen wie eine Eigenschaft geben.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Silvan80
06.07.2015, 17:31
es geht nicht um select?!? das war ein Beispiel.
darum gehts Sheets(blatt2).Cells(Row.Count, 2).End(xlUp).Row

EarlFred
06.07.2015, 17:32
Hallo Silvan,

ich habe in meinem Modul immer "Option Explicit" in der ersten Zeile stehen und erhalte die Fehlermeldung:
"Fehler bim Compilieren: Variable nicht definiert"
Markiert ist
Sheets(blatt2).Cells(Row.Count, 2).End(xlUp).Row

Damit kann man sicher mehr anfangen - also: Immer die Option aktivieren.

Option Explicit

Sub test()
Dim blatt2 As String
Dim Zeile As Long

blatt2 = ActiveSheet.Name
Zeile = Sheets(blatt2).Cells(Rows.Count, 2).End(xlUp).Row
End Sub

Ich arbeite aber lieber mit Objekten:
Option Explicit

Sub test()
Dim blatt2 As Worksheet
Dim Zeile As Long

Set blatt2 = ActiveSheet

Zeile = blatt2.Cells(Rows.Count, 2).End(xlUp).Row

Set blatt2 = Nothing
End Sub

Grüße
EarlFred

Silvan80
06.07.2015, 17:45
Hallo EarlFred

Vielen Dank für deine Hilfe.
Ich habe die Variablen schon definiert, einfach ausgelagert und wollte hier nicht alles posten.
Du hast mir aber trotzdem super geholfen. Hatte die Variable Zeile als Integer deminsoniert anstatt als Long (wie in deinem Beispiel). Mit Long funz tiptop.
Vielen Dank und schönen Abend zusammen