Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1416to1420
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
Inhaltsverzeichnis

Fehler: "Sub oder Function nicht definiert"

Fehler: "Sub oder Function nicht definiert"
26.03.2015 10:08:44
tobi
Hallo,
ich erhalte immer die Fehlermeldung, dass "Sub oder Function" nicht definiert sei?

Public Sub CmdAbbruch_Click()
Unload frmNoten
End Sub
Public Sub CmdUebernehmen_Click()
Dim Einzelnote(7 To 12) As Variant
Dim Durchschnittsnote As Integer
For i = 7 To 12
Einzelnote(i) = Me.Controls("ComboBox" & i).Value
Next i
MsgBox Fach(0)
'For i = 1 To 6
'        If Me.Controls("ComboBox" & i).Value = Fach(0) Then
'            MsgBox "Klappt"
'        End If
'Next i
Unload frmNoten
End Sub
Public Sub UserForm_Initialize()
Dim i As Integer
Dim n As Integer
Dim Fach() As Variant
Fach = Array("Fach1", "Fach2", "Fach3", "Fach4", "Fach5", "Fach6")
Dim Notenwert() As Variant
Notenwert = Array("1,0", "1,3", "1,7", "2,0", "2,3", "2,7", "3,0")
For i = 1 To 6
For n = 0 To 5
Me.Controls("ComboBox" & i).AddItem Fach(n)
Next n
Next i
For i = 7 To 12
For n = 0 To 6
Me.Controls("ComboBox" & i).AddItem Notenwert(n)
Next n
Next i
End Sub

Das muss doch irgendwie daran liegen, dass ich die Variable bzw. das Array Fach( ) bei "Public Sub UserForm_Initialize()" definiert habe und nun bei "Public Sub CmdUebernehmen_Click()" anzeigen bzw. weiterverarbeiten möchte. Hab doch extra ein public sub erstellt (globale Variable?).
Arbeite mich gerade erst in VBA ein...
Vielen Dank für Eure Hilfe
Grüße

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Public Sub oder Public Variable
26.03.2015 10:22:13
EtoPHG
Hallo Tobi,
Da verstehst du die Anweisung Public komplett miss.
Public Sub... VBA-Hilfe: Optional. Auf die Sub-Prozedur kann von allen anderen Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul (mit einer Option Private-Anweisung) kann auf die Prozedur nur innerhalb des Projekts zugegriffen werden.
Public Variable... VBA-Hilfe: Wird auf Modulebene verwendet, um öffentliche Variablen zu deklarieren und den dafür erforderlichen Speicher zu reservieren.
Eine Variable innerhalb einer Public Subbleibt Private für dieser Sub und wird nicht automatisch zu einer Public Variablen! Eine Variable, die für alle Sub/Function innerhalb eines Moduls gültig sein soll, muss ausserhalb solcher ganz einfach mit DIM deklariert werden!
Option Explicit
Dim Fach() As Variant
Public Sub CmdAbbruch_Click()
...
Vor allem solltest du als Anfänger die Option Explicit Anweisung als erste Codezeile in jedes Modul setzen.
Gruess Hansueli

Anzeige
AW: Public Sub oder Public Variable
26.03.2015 10:38:56
tobi
Hallo Hansueli,
Danke für deine schnelle Nachricht.
1) Ich habe links in der VBA Entwicklungsumgebung in meinem "Strukturbaum" :
Formulare
frmNoten
Module
Modul1
Wieso kann ich
Option Explicit
Dim Fach() As Variant
Fach = Array("Masterarbeit", "Windenergie", "Faserverbund", "Raumfahrtantriebe 1", "Composites", "Wahlfach")
Nicht einfach in Modul1 definieren? Das müsste doch auf Modulebene möglich sein?
Sub FormularAufruf()
Option Explicit
Dim Fach() As Variant
Array("Fach1", "Fach2", "Fach3", "Fach4", "Fach5", "Fach6")
frmNoten.Show
End Sub

2) Und wieso meckert er mir hier wenn ich das alles außerhalb der Subs definiere?
Option Explicit
Dim Fach() As Variant
Array("Fach1", "Fach2", "Fach3", "Fach4", "Fach5", "Fach6")
Public Sub CmdAbbruch_Click()
Unload frmNoten
End Sub
Public Sub CmdUebernehmen_Click()
Dim Einzelnote(7 To 12) As Variant
Dim Durchschnittsnote As Integer
For i = 7 To 12
Einzelnote(i) = Me.Controls("ComboBox" & i).Value
Next i
MsgBox Fach(1)
Unload frmNoten
'Notenausgabe.Show
End Sub

Anzeige
AW: Public Sub oder Public Variable
26.03.2015 10:56:26
EtoPHG
Hallo Tobi,
Benutz doch als Anfänger bitte so oft wie möglich die eingebaute VBA-Hilfe (F1) im VB-Editor.
Warum du das nicht kannst: Weil du in deinen erneuten Beispiel, die geforderte Reihenfolge und Struktur von VBA in keinster Art und Weise einhälts.

'Fehler: Innerhalb einer Prozedur ungültig
Option Explicit
' Deklariert eine Variable für die Sub Formularaufruf, kann also nur innerhalb dieser gebraucht  _
werden!
Dim Fach() As Variant
'Fehler ist keine gültige Anweisung
Array("Fach1", "Fach2", "Fach3", "Fach4", "Fach5", "Fach6")
Die Fehlermeldungen des Compilers sollte man nicht einfach wegklicken, sondern lesen und verstehen!
Den Cursor auf das Keywort (z.B. Option) setzen und F1 -> Hilfe lesen und verstehen!
Besucht einen VBA-Grundkurs, oder kauf ein Buch, oder erkundige dich im Netz über Grundstrukturen von VB.
Gruess Hansueli

Anzeige
AW: Public Sub oder Public Variable
26.03.2015 11:02:17
Rudi
Hallo,
außerhalb einer Prozedur kannst du nur Konstanten belegen.
Das geht aber nicht mit Arrays und Objekten.
Du brauchst also eine Art Initialisierungsroutine oder belegst die Var in einer anderen Prozedur (z.B. UserForm_Initialize). Hier darfst du die Var aber nicht erneut deklarieren.
Gruß
Rudi

AW: Public Sub oder Public Variable
26.03.2015 11:05:48
Nepumuk
Hallo Rudi,
du hast noch die Funktion als "intelligente" Variable vergessen. Die kann nämlich sehr wohl ein Array zurückgeben.
Gruß
Nepumuk

AW: Public Sub oder Public Variable
26.03.2015 11:24:13
Nepumuk
Beispiel:
Option Explicit

Public Function Fach() As Variant
    Fach = Array("Fach1", "Fach2", "Fach3", "Fach4", "Fach5")
End Function

Public Sub Test()
    MsgBox Fach(0)
End Sub

Anzeige
aah, ooh
26.03.2015 12:55:19
Rudi
Hallo,
du bist wirklich ein Fuchs!
Auf die Idee wäre ich nie gekommen.
Gruß
Rudi

50 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige