Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variblenwert wird nicht in Funktion übernommen

Variblenwert wird nicht in Funktion übernommen
29.07.2014 15:48:52
Marius
Hallo liebes Forum,
ich arbeite seit ein paar Tagen mit VBA und wurschtel mich da so ein wenig rein.
zu meinem Problem habe ich hier keine lösung finden können, weswegen ich nun hier poste. Ich hoffe ihr könnt mir helfen.
Ich habe eine Userform zur Dateneingabe erstellt. Zur Problemlösung gehe ich gerade nach Eingabemöglichkeiten vor, weswegen der Code hier so kurz ist.
Dieser sieht nun wie folgt aus:
Private Sub Boxes()
ComboBox2.Enabled = truth
ComboBox3.Enabled = truth
TextBox2.Enabled = truth
TextBox3.Enabled = truth
Label3.Enabled = truth
Label4.Enabled = truth
Label5.Enabled = truth
Label9.Enabled = truth
End Sub

Public Sub Combobox1_afterupdate()
Dim truth As Boolean
If ComboBox1.Text = "Beratung" Then
truth = False
Else
truth = True
End If
Boxes
MsgBox truth
End Sub
Der Code soll folgendes machen:
Wenn in der Combobox1 "Beratung" eingegeben wird, sollen alle anderen Textboxes und Labels deaktiviert werden, damit keine Eingabe mehr möglich ist. Jedoch, wenn man sich aus versehen verklicken haben sollte, sollen die Felder bei richtger Eingabe wieder zur Bearbeitung geöffnet werden.
(Die Msgbox ist gerade nur zur Überprüfung da und wird wieder entfernt)
Jetzt hab ich das Problem, dass die Funktion Boxes nur einmal ausgeführt wird. Dummerweis immer mit False. Wenn ich den Boxes-Code Manuel in die Else-Teil von afterupdate einfüge klappt alles. Die Boolian-Variable wird auch richtig gesetzt, aber... die Felder bleiben dennoch gesperrt.
Für jeden Denkanstoß bin ich sehr dankbar!
Viele Grüße
Marius

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 15:54:47
Robert
Hallo,
Füge den "Boxes" Code nicht in den Else Teil, sondern nach "End If" ein.
Viele Grüße
Robert

AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 18:12:29
Marius
Danke für den Link. Werde es künftig umsetzt.
Ich hatte woanders gelesen, dass man Variablen sub-übergreifend verwenden kann, wenn man sie in ner Public Sub deklariert. Hat bisher auch prima geklappt.

Anzeige
AW: Variblenwert wird nicht in Funktion übernommen
30.07.2014 09:57:13
Daniel
Hi
das hast du falsch verstanden und das kann auch nicht funktionieren.
Variablen, die innerhalb einer Sub deklariert werden, sind nur innerhalb dieser Sub gültig.
Sie werden normalerweise auch gelöscht, wenn die Sub durchgelaufen ist. Das gilt auch für Public Subs.
wenn du Variablen von mehreren Subs nutzen willst, musst du sie oberhalb der Makros direkt unter Option Explict deklarieren.
Deklarierst du Dim x as Long, dann kann x von allen Makros innerhalb dieses Moduls verwendet werden
Deklarierst du Public x as Long in einem allgemeinen Modul, dann kann die Variable von allen Markos innerhalb der Datei verwendet werden.
Gruß Daniel

Anzeige
AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 15:58:10
ChrisL
Hi Marius
Wenn Du die Variable innerhalb der Prozedur deklarierst, steht diese nicht in der anderen Prozedur zur Verfügung resp. ist der Wert immer False.
Variante 1:
Dim truth As Boolean
Private Sub Boxes()
MsgBox truth
End Sub

Public Sub Combobox1_afterupdate()
If ComboBox1.Text = "Beratung" Then
truth = False
Else
truth = True
End If
Boxes
End Sub

Variante 2:
Private Sub Boxes(bBeratung As Boolean)
MsgBox bBeratung
End Sub

Public Sub Combobox1_afterupdate()
If ComboBox1.Text = "Beratung" Then
Call Boxes(False)
Else
Call Boxes(True)
End If
End Sub

Würde Nr. 2 wählen.
cu
Chris

Anzeige
AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 16:18:40
Rudi
Hallo,

Public Sub Combobox1_afterupdate()
Boxes ComboBox1.Text = "Beratung"
End Sub

Private Sub Boxes(truth As Boolean)
ComboBox2.Enabled = truth
ComboBox3.Enabled = truth
TextBox2.Enabled = truth
TextBox3.Enabled = truth
Label3.Enabled = truth
Label4.Enabled = truth
Label5.Enabled = truth
Label9.Enabled = truth
End Sub

Gruß
Rudi

AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 18:03:26
Marius
Schon mal vielen Dank für das schnelle Feedback.
@ Robert: entweder ich verlese mich, oder das habe ich schon getan.
@ Daniel: von Option Explicit habe ich schon gehört. Hatte allerdings auch gelesen, wenn man Variablen in ner public sub deklariert können sie in jeder private Sub verwendet werden. Ausserdem, die Variable wird ja ordentlich übernommen, das sehe ich an der msgbox, jedoch nicht an die Funktion übergeben. Oder verwechsel ich hier was?
@Chris mit dem "call"-befehl kann ich also einen spezifischen variablenwert direkt in die Sub übergeben? wird ich mal probieren. danke.
@ Rudi: sorry die Syntax verstehe ich nicht. was macht das?
Vielen Dank fürs Feedback
Marius

Anzeige
AW: Variblenwert wird nicht in Funktion übernommen
29.07.2014 18:14:31
Marius
Sorry für den Doppelpost. Irgendwie steige ich hier nur langsam durch, wie das mit dem antworten funktioniert :)

was macht das?
29.07.2014 22:08:37
Rudi
Hallo,
Boxes ComboBox1.Text = "Beratung"
übergibt True an Boxes wenn ComboBox1.Text = "Beratung" ist. Ansonsten False.
Gruß
Rudi

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige