Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Public Dim läßt sich nicht ansprechen

Public Dim läßt sich nicht ansprechen
15.05.2008 20:06:58
Andreas
Hallo Herber Fans,
ich arbeite daran, die absolut letzte Zelle eines Bereiches zu ermitteln. Das Makro dafür läuft schon und liegt in einem Modul. Um das Makro nicht immer als Codezeilen zu haben, möchte ich es über Call ansprechen. Auch aus anderen Modulen heraus. Das Ergebnis von RealLastCell_Makro soll als globale Dim RealLastCell allen Makros in allen Modulen der Datei zur Verfügung stehen.
Ich habe RealLastCell auch als Public in einem Extra Modul definiert. Aber ich bekomme den Debugger, daß eine Objekt oder With Variable nicht festgelegt ist. In einer ähnlichen Konstellation hat die globale Definition einer Dim und der Zugriff schon einwandfrei funktioniert.
Woran liegt das Scheitern in diesem Fall?
https://www.herber.de/bbs/user/52382.xls
Vielen Dank für den entscheidenden Hinweis.
Gruß, Andreas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Public Dim läßt sich nicht ansprechen
15.05.2008 20:15:10
Hajo_Zi
Hallo Andreas,
gebe einer Variablen nicht den Namen eines Makros und Public Variable reicht es muss nnicht noch Dim Variable sein, das ist dann einen andere.

wenn ich es richtig verstehe, so ...
15.05.2008 20:19:00
Matthias
Hi
Wenn Du die Varable eh schon als Public deklariert hast, brauchst Du es doch nicht nochmal zu deklarieren.
Sub RealLastCell_Makro()
'Function RealLastCell(TheSheet As Worksheet) As Range
'Dim RealLastCell As Range setz hier ein Apostroph davor
Dim ExcelLastCell As Range
Dim Row%, Col%, LastRowWithData%, LastColWithData%
Application.ScreenUpdating = False
Set ExcelLastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
LastRowWithData = ExcelLastCell.Row
Row = ExcelLastCell.Row
Do While Application.CountA(ActiveSheet.Rows(Row)) = 0 And Row 1
Row = Row - 1
Loop
LastRowWithData = Row
LastColWithData = ExcelLastCell.Column
Col = ExcelLastCell.Column
Do While Application.CountA(ActiveSheet.Columns(Col)) = 0 And Col 1
Col = Col - 1
Loop
LastColWithData = Col
Set RealLastCell = ActiveSheet.Cells(Row, Col)
'End Function
MsgBox RealLastCell.Address
End Sub

oder Du setzt
vor End Sub noch mal
Set RealLastCell = Nothing


Gruß Matthias

Anzeige
AW: Public Dim läßt sich nicht ansprechen
15.05.2008 20:19:00
MichaV
Hallo,
Dein Beispiel passt nicht zur Frage, darum die Antwort von Hajo.
Warum es bei Dir nicht klappt ist:
Sub RealLastCell_Makro()
'Function RealLastCell(TheSheet As Worksheet) As Range
Dim RealLastCell As Range '<--- Du Deklarierst RealLastCell hier nochmal! Damit sind die Zuweisungen zu RealLastCell in dieser Prozedur nur für diese Prozedur gültig. Die global definiete Variable RealLastCell wird in dieser Prozedur also überhaupt nicht angesprochen!
Dim ExcelLastCell As Range
Dim Row%, Col%, LastRowWithData%, LastColWithData%
Application.ScreenUpdating = False
Gruß- Micha
PS: Rückmeldung wäre nett.

Anzeige
Warum erfindet Andreas hier das Fahrrad neu?
15.05.2008 20:27:17
Luc:-?
Diese Frage erhebt sich doch auch, Micha!
Na ja, viell aus "Spaß an der Freud'"... ;-)
Ansonsten gibt's im Archiv sicher massenhaft Bspp dafür... Auch ich hab mal vor Jahren 'ne udF dafür geschrieben... Allerdings noch ohne ...End(xlDown/xlUp), weshalb die wohl etwas zu langsam ist. Aber wie gesagt - Archiv!
Gruß Luc :-?

AW: Warum erfindet Andreas hier das Fahrrad neu?
15.05.2008 20:36:41
MichaV
Hallo Luc,
es erheben sich eine Menge Fragen. Aber nur eine wurde gestellt und beantwortet.
Und warum soll Andreas nicht seine eigenen Räder erfinden? Du hast mal ne langsame UdF darüber geschrieben, Hajo hat sicher eine (copyrightgeschützte) Variante auf Lager und Nepumuk löst das mit ein paar APIs. Vielleicht hab ich sowas auch schonmal gebastelt, und viele andere auch. Na und? Sollen wir jetzt alle aufhören Code zu schreiben, nur weil er schonmal von anderen geschrieben wurde?
Gruß- Micha

Anzeige
Nee, ich sagte doch "Spaß..." ;-)
15.05.2008 20:55:00
Luc:-?
...aber Bspp gibt's halt so viele, Micha,
dass er eigentlich allein drauf kommen könnte. Oder... ;-)
Gruß Luc :-?

AW: Nee, ich sagte doch "Spaß..." ;-)
15.05.2008 21:11:00
MichaV
Hallo Luc,
ja, die Archive sind vollgestopft mit Lösungen.
Eigentlich könnten alle Excel-Foren geschlossen werden, denn eigentlich wurde alles schonmal beantwortet...
Gruß- Micha
PS: Heut kriegst Du mich nicht :o)

OT: Ja, ja, hast das letzte Wort... ;-) orT
15.05.2008 21:25:00
Luc:-?
Gruß Luc :-?
PS: ...allerdings scheinen das mit den Archiven viele nicht zu ahnen, weil sie wohl ihr Problem für einzigartig halten... ;-)

AW: OT: Ja, ja, hast das letzte Wort... ;-) orT
16.05.2008 14:22:57
Andreas
Hallo alle zusammen,
na das war eine Überraschung als ich heute morgen sah, wie lang der Thread geworden war…
Es war keine böse Absicht oder Faulheit, daß ich den Fehler mit der doppelten Deklaration der Variablen nicht gefunden habe und deswegen postete. Der erste Schritt ist immer die Suche im Archiv, F1 oder der Objektkatalog. Bspw. zeichne ich mit dem Makrorekorder einen Code auf und suche dann nach den mir aus der Aufzeichnung bekannten VBA Befehlen + Stichwort hier im Forum. Das ich gestern diesen Kardinalfehler nicht entdeckt habe, lag an diesem langen Tag. Es ist für mich manchmal schwer, in der VBA Erstellung den Überblick zu behalten, wenn ich an einer Sache dran bin und sich schon drei neue Ideen entwickeln, weil mir diese in Threads während meiner eigentlichen Suche begegnen.
Dadurch wird es unübersichtlich. Ich weiß, daß das nicht gut ist und es durchaus klüger wäre am nächsten Tag ausgeruht wieder ans Werk zu gehen und den Fehler vermutlich selber zu finden. Manchmal sehe ich aber den Wald vor lauter Bäumen nicht und sollte aufhören. Aber auf der anderen Seite weiß ich, daß gerade solche Abend mit Verbissenheit im VBA Editor zu ganz neuen Erkenntnissen (leider aber auch banalen Fehlern…) führen können. Deswegen werde ich sie nicht missen wollen. Auf jeden Fall aber auch versuchen mehr Struktur in meine Arbeit zu bringen um solche Fehler zu vermeiden. Ich habe mir heute morgen in meiner Person.xls eine Tipps und Tricks Rubrik eingerichtet und den Hinweis zur Variablen Deklaration ganz vorn aufgenommen.
Ich möchte Euch allen noch einmal danken, daß ihr mich gestern auf den Fehler aufmerksam gemacht habt, ich dadurch den Gedankengang abschließen und ruhig(er) den Abend beschließen konnte.
Danke für Euer Engagement in diesem Forum und Eure Geduld.
Habt alle ein gutes Wochenende.
Grüße aus Berlin, Andreas

Anzeige
AW: ..und die MsgBox mag keine Objekte
15.05.2008 20:38:00
Gerd
Hallo Andreas,
..sondern nur deren Eigenschaften.

Sub TEST()
Call RealLastCell_Makro
MsgBox RealLastCell.Address
End Sub


Gruß Gerd

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige