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

2 Buttons, eine Prozedur, zwei Ausgaben

2 Buttons, eine Prozedur, zwei Ausgaben
27.08.2002 07:23:16
Norbert
Hallo ...,

ich habe folgende Programmteile:

Private Sub CommandButton1_Click()
i = 1
Preise.Show
End Sub

Private Sub CommandButton2_Click()
i = 2
Preise.Show
End Sub

Private Sub TextBox1_Change()
Dim Txt
Txt = TextBox1.Text
If Txt = "" Then Exit Sub
If IsNumeric(Txt) = False Then GoTo ErrorHandler
If Len(Txt) = 4 Then
Txt = Left(Txt, 1) & "." & Right(Txt, 3)

'SK700_Testeinstellungen.Controls("Textbox" & i) = Txt <- so möchte ich das haben
SK700_Testeinstellungen.TextBox1 = Txt <- so funktioniert das
Unload Me
End If


Exit Sub
ErrorHandler:
Beep
MsgBox "Keine Zahl!", vbCritical
TextBox1.Text = ""
End Sub


Ich rufe mit 2 unterschiedlichen Buttons ein und dieselbe Prozedur auf. Hier gebe ich einen Preis ein.
Wenn ich mit Button1 die Prozedur starte, will ich damit den Preis in Textbox1 ändern. (i=1)
Wenn ich mit Button2 die Prozedur starte, will ich damit den Preis in Textbox2 ändern. (i=2)
hier folgt dann noch Button3, 4, ... (habe ich oben nicht berücksichtigt)

Aber das führt immer zu einem Fehler. Was mache ich falsch??

Danke

Norbert




13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: 2 Buttons, eine Prozedur, zwei Ausgaben
27.08.2002 07:30:21
Harald Kapp
Hallo Norbert,
ich kann Dir zwar nicht sagen, was Du falsch machst, aber was hältst Du von folgendem Vorschlag:

'SK700_Testeinstellungen.Controls("Textbox" & i) = Txt <- so möchte ich das haben
'SK700_Testeinstellungen.TextBox1 = Txt <- so funktioniert das
Select Case i
Case 1
SK700_Testeinstellungen.TextBox1 = Txt
Case 2
SK700_Testeinstellungen.TextBox2 = Txt
Case 3
SK700_Testeinstellungen.TextBox3 = Txt
Case Else
MsgBox "das darf gar nicht passieren!"
End Select

Eine andere Möglichkeit wäre, alle Textbox-Controls beim Aufruf der Form einmal in einem Array zu speichern und dann mit array(i) darauf zuzugreifen. Das hätte den Vorteil, dass Du den Code nicht jedes Mal anpassen musst, wenn sich die Anzahl der Textboxen ändert. Aber das wäre eine Übung für Minuten der Langeweile.

Gruß Harald

Anzeige
Re: Buttons, eine Prozedur, zwei Ausgaben
27.08.2002 07:41:03
Norbert
Hallo Harald,

das ist nett und funktioniert auch später, löst aber nicht mein Problem ;-((
Ich bekomme das i nicht in die Prozedur.
Fehlermeldung:
Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses ...

Hier liegt irgendwo mein Problem

Re: Buttons, eine Prozedur, zwei Ausgaben
27.08.2002 07:44:02
Harald Kapp
Hallo Norbert,
warum hast Du das nicht gleich gesagt?

Lege i außerhalb Deiner Subs als globale Variable fest:

public i as integer


Das sollte dann funktionieren.

Allerdings würde ich in solch einem Fall empfehlen, einen eindeutigen Namen zu verwenden, zu leicht verwendest Du i an anderer Stelle als Zählvariable. Also etwa

Public P_Index as integer

Gruß Harald

Anzeige
Re: ;-(( Klappt immer noch nicht
27.08.2002 08:06:01
Norbert
Hallo Harald,

das klappt immer nich nicht.

Jetzt kommt laufzeitfehler
Das angegebene Objekt kann nicht gefunden werden.

i_index (so habe ich das i genannt) war eine gute Idee ;-))

in SK700_Testeinstellungen.Controls("Textbox" & i_Index) = Txt

der Wert von i_Index = 0 obwohl ich eigendlich 1 übergebe.

Norbert

Re: ;-(( Klappt immer noch nicht
27.08.2002 08:13:21
Harald Kapp
Hallo Norbert,
jetzt muss ich doch noch mal nachfragen, weil ich über Dein ursprüngliches Codefragment ins Stolpern gekommen bin:
Also, Du hast eine UserForm, auf der befinden sich 2 Buttons und 2 Textboxen. Du drückst einen Button und möchtest, dass in der dazu gehörenden Textbox ein Wert erscheint?
Dann verstehe ich die Textbox1.Change Prozedur nicht.

Kannst Du den genauen Ablauf mal beschreiben? Dann findet sich sicher auch eine Lösung

Gruß Harald

Anzeige
Re: ;-(( Klappt immer noch nicht
27.08.2002 08:30:17
Norbert
Also ich bin in einer Userform (SK700_Testeinstellungen). Hier habe ich mehrere Buttons.
Zu jedem Button eine Textbox. (i_index)
Drücke ich hier einen Button
Private Sub CommandButton1_Click()
i_Index = 1
Preise.Show
End Sub

öffne ich die Userform Preise.

in dieser Userform gibt es eine weitere Textbox. Hier gebe ich einen Preis ein.
Das ist die TextBox1. Das Textbox1_Change Ereignis folgt dann. Wenn die 4 Ziffern lang ist sollen diese 4 Ziffern als Preis (z.B.: 1,222) in Userform (SK700_Testeinstellungen) in die dazugehörige Textbox geschrieben werden.

Hilft das ? Hoffendlich

Norbert

Anzeige
Re: ;-(( Klappt immer noch nicht
27.08.2002 08:54:32
Harald Kapp
So wird ein Schuh daraus:
aus der TextboxChange Ereignisprozedur gibst Du den Text zurück, den Du in der CommandButtonClick Prozedur dem entsprechenden Textfeld zuweist:

Bei mir tut's das wie von Dir beschrieben.

Gruß Harald

Re: ;-(( Klappt besser aber
27.08.2002 09:17:02
Norbert
Hallo Harald,

jetzt wird zwar der erste Preis gelöscht und mit dem neuen überschrieben. Aber dieser Wert P_txt ist immer ""

Norbert

Re: ;-(( Klappt besser aber
27.08.2002 10:00:02
Harald Kapp
Hallo Norbert,
das versteh ich nicht. Ich hab's probiert: Bei Klick auf Button1 kommt die Form zur Preiseingabe hoch. Nach der 4. Ziffer geht sie weg und der Preis steht in Textbox1. Ebenso bei Button2, dann steht der Preis in Textbox2.
hast Du auch die oberste Deklaration "Public P_txt as String" im Hauptmodul eingegeben?

Mein Tip: wenn Du die Option Explicit gesetzt hast, dann beschwert sich VBA, wenn Du eine Variable verwendest, die Du vorher nicht deklariert hast.

Gruß Harald

Anzeige
Re: ;-(( Klappt besser aber
27.08.2002 10:18:27
Norbert
ich habe be unload me einen haltepunkt gesetzt.
wenn ich in der Userform Preise den Wert P_txt ansehe ist dieser z.B. 7.777
aber in der Userform SK700_Testeinstellungen ist P_txt = ""

Private Sub CommandButton1_Click()
Preise.Show
TextBox1.Text = P_txt

End Sub

in beiden Userform's steht ganz oben
Option Explicit
Public P_txt As String

verstehe ich nicht warum das immer zu "" wird

Gruß Norbert

Re: ;-(( Klappt besser aber
27.08.2002 10:41:02
Harald Kapp
Hallo Norbert,

ganz klar: Die Deklaration von P_txt darf NICHT in der USerform stehen, sondern wie in meinem Beispiel nur einmal und zwar in bzw. über der Haupt-SUB, also dem Programm, welches die Userforms aufruft.

Mit Deiner mehrfachen Deklaration erstellt VBA für jede Userform eine eigene Variable. Damit ist natürlich der Inhalt der Variablen in der anderen Userform nicht geändert.

Gruß Harald

Anzeige
Re: ;-(( Klappt besser aber
27.08.2002 10:41:06
Harald Kapp
Hallo Norbert,

ganz klar: Die Deklaration von P_txt darf NICHT in der USerform stehen, sondern wie in meinem Beispiel nur einmal und zwar in bzw. über der Haupt-SUB, also dem Programm, welches die Userforms aufruft.

Mit Deiner mehrfachen Deklaration erstellt VBA für jede Userform eine eigene Variable. Damit ist natürlich der Inhalt der Variablen in der anderen Userform nicht geändert.

Gruß Harald

Re: ;-)) ;-))
27.08.2002 11:12:08
Norbert
Hallo Harald,

das wars. Danke, Danke ..........

Ich würd Dir jetzt ne Cola oder so was ausgeben.
Hast Du Dir ehrlich verdient.

Nochmals Danke

Norbert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige