habe folgendes Minimakro geschrieben
Public Sub listing()
Dim Liste As Range
Set Liste = Application.Worksheets("Uno").Range("A1:E32")
b = Application.WorksheetFunction.CountIf(Liste, "Berlin")
For a = b * 5 To 2 Step -2
MsgBox "Klappt ja doch...", vbOKCancel, "Microschuft Äcksell"
Next a
End Sub
dabei steht im Bereich A1 bis E32 vier mal "Berlin" und dementsprechend
müßte die entsprechende MessageBox 10 x erscheinen.
Aber beim Ausführen des makros erhalte ich folgende Fehlermeldung:
Laufzeitfehler '9'
Index außerhalb des gültigen Bereichs
und die Zeile 3 (Set Liste ... usw) ist gelb markiert, d.h. für mich die
Variablenzuweisung "as Range" hat Excel akzeptiert - oder?
Ich hatte (das gleiche) Makro schon mal am Laufen - da hat es gefunkt.
Wo liegt bloß mein Fehler, die Onlinehilfe dazu kann man vergessen
TIA
Uwe
existiert in deiner aktiven Arbeitsmappe ein Blatt mit Namen "Uno" ???
Bei mir läuft's ohne Prob.
Public Sub listing()
Dim Liste As Range
Dim a As Long, b As Long
Set Liste = Application.Worksheets("Uno").Range("A1:E32")
b = Application.WorksheetFunction.CountIf(Liste, "Berlin")
For a = b * 5 To 2 Step -2
MsgBox "Klappt ja doch...", vbOKCancel, "Microschuft Äcksell " & a / 2
Next a
End Sub
hth
JB
Uwe Köhler schrieb:
Überprüf mal den Namen des Tabellenblattes! Vermutlich ist der Name "Uno"
falsch oder nicht vorhanden (eine leertaste mit reingeschmuggelt????)
Ich würde hier eh besser den codenamen des Tabellenblattes benutzen als
Application.Worksheets("Uno").Range("A1:E32")
den codenamen findest du im vba-editor unter Ansicht Projekt-Explorer dann
der Tabellenname, der NICHT in klammern steht.
dann kannst du nämlich schreiben: Tabelle1.Range("A1:E32")
das hat den vorteil, wenn jemand den tabellenblattnamen im Excel ändert,
bleibt der Bezug der gleiche.
Bye
Ulli.
Hallo Ulli, Hallo Joachim,
ja genau - ein blödes Leerzeichen im Tabellenblattnamen war es. Ich
dachte schon ich spinne. Danke euch beiden
Uwe