Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1072to1076
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
Public bzw. globale Variable?
09.05.2009 17:54:40
Jaffi
Hallo Forum,
ohne euch klappts mal wieder nicht.
In einer Sub habe ich eine Variable folgendermassen deklariert:

Dim varEingabe
bla bla
varEingabe = wksEingang.Range("C2")
bla bla


Ich möchte nun von einem anderen Modul aus auf diese Variable zugreifen bzw. sie auf Knopfdruck in einer MsgBox augeben.
Ich probiere nun schon wieder seid Stunden dran rum und ich bekomme es einfach nicht hin.
Bei meiner googlelei hies es, man soll ein Standard-Modul erstellen und einfach folgendes rein tun:


Public varEingabe As integer


Aber natürlich funktioniert das nicht ;) kam mir gleich ein wenig zu einfach vor ;o). Denn auch dieses Modul sollte ja ersteinmal gesagt bekommen was varEingabe denn eigentlich beinhaltet oder?
Habs in dem Standardmodul auch einfach mal blauäugigerweise mit folgendem probiert:


Sub publicVar()
Dim wksEingang As Worksheet
Public varEingabe as Integer
Set wksEingang = Worksheets("Wareneingang")
varEingabe = wksEingang.Range("C2")
End Sub


Und logisch. Nichts. Mein Mudul "modvarabfrage" gibt eine leere MsgBox aus:


Sub letzteeingabe()
' Tastenkombination: Wahltaste+Befehlstaste+l
msgBox "" & varEingabe & ""
End Sub


Ich habe auch versucht einfach die Variable in meinem "grossen" Arbeitsplatt GLEICH als Public-Variable zu definieren:


Sub WarenEingang()
Public varEingabe As Integer 'Variable für Eingabe in Zelle C2 im Blatt Wareneingang
Dim wksEingang, wksBestellung, wksManuell, wkssicher As Worksheet
Dim rngSuchen As Range
Dim lngZeile, lngZeileLast As Long
Dim bManuell As Boolean
Dim lngStueckzahl As Long
On Error GoTo Fehler
Set wksEingang = Worksheets("Wareneingang")
Set wksBestellung = Worksheets("Bestellungen")
Set wksManuell = Worksheets("Manuell")
Set wkssicher = Worksheets("Sicherung")
bla..
bla..


Da kommt aber sofort: "Fehler beim Kompilieren Ungültiges Attribut in Sub oder Function"
Kann mir irgendjemand einen Tip geben was ich falsch mache?
Es muss doch möglich sein, auf die im wksEingan zu letzt eingegebene, 6 stellige Zahl (eben die varEingabe) von anderen Modulen aus zuzugreifen...bzw. diese ausgeben zu lassen..
am verzweifeln bin.... :(
Mal wieder tausend Dank für jeglichen Tip an eine (auch wenns schon besser wird) VBA-Anfängerin
Grüsse
J.

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

Betreff
Datum
Anwender
Anzeige
AW: Public bzw. globale Variable?
09.05.2009 17:58:52
Hajo_Zi
Hallo J.
die erste Variante ist richtig. Du hast die Variable nicht noch woanders in der Datei Dimensioniert?

AW: Public bzw. globale Variable?
09.05.2009 18:04:59
Jaffi
Hallo Hajo,
danke für Deine schnelle Antwort..
Mit erste Variante meinst du das ein einfaches Standardmodul mit: Public varEingabe As integer gefüllt werden muss?
Mhm... sorry, aber was meinst du mit woanders dimensioniert?
Nutze diese Eingabe eigentlich nur in diesem Worksheet..
AW: Public bzw. globale Variable?
09.05.2009 18:06:20
Hajo_Zi
Hallo J.
Du hattest geschrieben in einem Modul?
Schreibst Du in einem anderem Modul Dim varEingabe ist das eine andere Variable.
Gruß Hajo
Anzeige
AW: Public bzw. globale Variable?
09.05.2009 18:24:31
Jaffi
Also im Modul modWareneingan wird die Variable als Dim deklariert und mit varEingabe = wksEingang.Range("C2") gefüllt. In einem anderen Modul (scheint wohl falsch zu sein) habe ich Public varEingabe As Integer ohne weitere Zeilen... irgendwie hab ich mich wohl verrannt und habe keinen Plan mehr
*grummel*
AW: Public bzw. globale Variable?
09.05.2009 18:28:04
Hajo_Zi
Hallo
mit Dim ist sie nur für das Modul definiert. Du hattest aber geschrieben das Du Sie mit Public definiert hast und das ist korrekt. Ich sehe Deine Datei nicht. Vielleicht solltest Du Sie verlinken.
Gruß Hajo
Anzeige
AW: Public bzw. globale Variable?
09.05.2009 18:38:25
Jaffi
Hier mal der Komplette Code, bissl Chaotisch aber funzt erstmal soweit, bis auf das ich die varEingabe eben nicht von woanders abfragen kann:

Sub WarenEingang()
'Prüfen des Wareneingangs
Dim wksEingang, wksBestellung, wksManuell, wkssicher As Worksheet
Dim varEingabe 'Variable für Eingabe in Zelle C2 im Blatt Wareneingang
Dim rngSuchen As Range
Dim lngZeile, lngZeileLast As Long
Dim bManuell As Boolean
Dim lngStueckzahl As Long
On Error GoTo Fehler
Set wksEingang = Worksheets("Wareneingang")
Set wksBestellung = Worksheets("Bestellungen")
Set wksManuell = Worksheets("Manuell")
Set wkssicher = Worksheets("Sicherung")
'Eingabe in C2 in Variablespeichern
varEingabe = wksEingang.Range("C2")
'1. Prüfung - 6stellige (NUR Zahlen) Dateieingabe in C2
If Len(varEingabe) = 6 And IsNumeric(varEingabe) Then
With wksManuell                                                                              _
' im Worksheet "Manuell"
For lngZeile = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row                                 _
' für alle Artikelnummern in Spalte 1
If .Cells(lngZeile, 1).Value = Range("c2").Value Then                                _
' falls die Artikelnummer der eingegebenen entspricht
bManuell = True                                                                  _
' manuelle Eingabeart merken
Do
lngStueckzahl = Application.InputBox("        Der Artikel muss manuell  _
erfasst werden.  " & vbNewLine & "         Bitte geben Sie die gezählte Menge ein!", "Kein Barcode vorhanden", , 400, 200, Type:=1) ' tatsächliche Stückzahl erfragen
If (lngStueckzahl  0
Exit For                                                                         _
' hier ist die Suche beendet
End If
Next lngZeile                                                                            _
' solange, bis die Liste durchsucht wurde
End With
With wkssicher
'letzte Zeile in Spalte A
lngZeileLast = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngZeileLast  0 Then
msgBox "Fehler-Nr. " & .Number & vbLf & .Description
End If
End With
End Sub


Die varEingabe muss für alle Module abrufbar sein. Schreibe ich anstelle wie oben public varEingabe As Integer kommt eben diese Fehlermeldung: Fehler beim Kompilieren Ungültiges Atribut in Sub oder Function...

Anzeige
AW: Public bzw. globale Variable?
09.05.2009 18:42:21
Hajo_Zi
Hallo,
die Variable wird nicht in einem Makro Definiert, sondern gleich oben unter Option Explicit.
Gruß Hajo
AW: Public bzw. globale Variable?
09.05.2009 18:48:24
Jaffi
hm..nun hab ich mir schon an den Kopf geklatscht....
ABER wenn ich das mache kommt:
Fehler-Nr. 6
Überlauf
menno was ist das nur? :(
AW: Public bzw. globale Variable?
09.05.2009 18:52:01
Jaffi
ich habs!!! public varEingabe as String .....machts :D
man das String, Long, Integer usw muss ich noch lernen...gibts da irgendwo ne gute Beschreibung zu? :D
Tausend Dank ..Ihr habt mich mal wieder auf den richtigen Weg gebracht... himmel ich liebe dieses Forum ;o)
Liebe Grüsse und schönes WE :*
Anzeige
AW: Public bzw. globale Variable?
09.05.2009 18:03:58
Gerd
Hallo Jaffi!

Aber natürlich funktioniert das nicht ;) kam mir gleich ein wenig zu einfach vor ;o). Denn auch dieses Modul sollte ja ersteinmal gesagt bekommen was varEingabe denn eigentlich beinhaltet oder?


Nichts oder. Völlig richtig.
Also in irgendeiner Prozedur musst Du den Wert der globalen Variablen einmal zuweisen.
Dann steht dir die gefüllte Variable zur Laufzeit überall im Code zur Verfügung.
Gruß Gerd

26 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige