Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dim-Anweisung = Einschränkungen

0 views
Skip to first unread message

Uwe Köhler

unread,
Aug 24, 1999, 3:00:00 AM8/24/99
to
Hallo NG,
hier mal eine totale Anfängerfrage zu VBA:

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

Joachim Braig

unread,
Aug 24, 1999, 3:00:00 AM8/24/99
to
Hallo 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:

Ulli

unread,
Aug 24, 1999, 3:00:00 AM8/24/99
to
Hallo Uwe!

Ü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.

Uwe Köhler

unread,
Aug 25, 1999, 3:00:00 AM8/25/99
to

Ulli schrieb in Nachricht <37C2DB17...@berg.net>...

>Hallo Uwe!
>
>Ü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")


Hallo Ulli, Hallo Joachim,

ja genau - ein blödes Leerzeichen im Tabellenblattnamen war es. Ich
dachte schon ich spinne. Danke euch beiden

Uwe

0 new messages