Guten Tag liebe Forummitglieder,
ich habe folgendes Problem,
Ich habe ein Formular mit einem Listenfeld (sie Anhang BildNr.3), zu diesem Formular habe ich eine VBA Code geschrieben, beim Starten des Formulars erscheinen 2 Standardausgaben (zuerst bild1, dann 2 und anschließlich 3) und nur danach öffnet sich mein Formular.
Kann man das irgendwie vermeiden?
Schöne Grüße Hase
Moin,
Zitat
... zu diesem Formular habe ich eine VBA Code geschrieben, ...
und wie lautet der
vollständige Code?
ach ja, entschuldigung
Private Sub Form_Current()
If Me!Text21 <> Me!Text34 Then
Me!Text21.BackColor = QBColor(7)
Me!Text34.BackColor = QBColor(7)
Else
Me!Text21.BackColor = QBColor(15)
Me!Text34.BackColor = QBColor(15)
End If
If Me!Text23 <> Me!Text36 Then
Me!Text23.BackColor = QBColor(7)
Me!Text36.BackColor = QBColor(7)
Else
Me!Text23.BackColor = QBColor(15)
Me!Text36.BackColor = QBColor(15)
End If
If Me!Text21 <> Me!Text34 Or Me!Text23 <> Me!Text36 Then
MsgBox "Die Daten stimmen nicht überein"
End If
'----------------------------------------------
If IsNull(Me!Text19) Then
Me!Text19.BackColor = QBColor(7)
Me!Text21.BackColor = QBColor(7)
Me!Text23.BackColor = QBColor(7)
Me!Text17.BackColor = QBColor(7)
Else
Me!Text19.BackColor = QBColor(15)
Me!Text21.BackColor = QBColor(15)
Me!Text23.BackColor = QBColor(15)
Me!Text17.BackColor = QBColor(15)
Debug.Print Me!Text19.Value
End If
If IsNull(Me!Text32) Then
Me!Text32.BackColor = QBColor(7)
Me!Text34.BackColor = QBColor(7)
Me!Text36.BackColor = QBColor(7)
Me!Text30.BackColor = QBColor(7)
Else
Me!Text32.BackColor = QBColor(15)
Me!Text34.BackColor = QBColor(15)
Me!Text36.BackColor = QBColor(15)
Me!Text30.BackColor = QBColor(15)
Debug.Print Me!Text19.Value
End If
If IsNull(Me!Text19) Then
MsgBox "Legen Sie ein neues Projekte in Projekte 1 an: " _
& vbLf & "" _
& vbLf & "Projektnummer: " & Me!Text32 _
& vbLf & "Projektname: " & Me!Text34 _
& vbLf & "Status: " & Me!Text36
End If
If IsNull(Me!Text32) Then
MsgBox "Legen Sie ein neues Projekt in Projekte2 an: " _
& vbLf & "" _
& vbLf & "Projektnummer: " & Me!Text21 _
& vbLf & "Projektname: " & Me!Text23 _
& vbLf & "Status: " & Me!Text17
End If
End Sub
also ausgelöst werden die MsgBoxen durch leere Felder Text19 und Text32. Allein an der Ausführung kannst du sicher erkennen, dass "sprechende" Bezeichner die Arbeit erleichtern.
Wenn die Meldungen hier nicht erscheinen sollen, musst du dir Gedanken über die Logik machen ...
Hi,
ZitatKann man das irgendwie vermeiden?
du bist lustig, du hast das doch selbst so programmiert. Und wie man das anders machen könnte, kann doch nur der wissen, der die Zusammenhänge kennt.
Danke für Eure schnelle Antworten
Hm, es ist nicht so einfach, wie ich es mir dachte.....ich bin nämlich Anfänger, in der Sache VBA
Zitat von: el_gomero am Oktober 20, 2015, 12:21:03
Wenn die Meldungen hier nicht erscheinen sollen, musst du dir Gedanken über die Logik machen ...
dann muss ich wohl meine Code anders formulieren ??? :-\
Ich habe den Fehler gefunden,
ich habe meine Code im Auswahltyp: Formular=>Ereignis=> Beim Anzeigen -geschrieben, deswegen kam es dazu, dass MsgBox erst geöffnet wurde
Jetzt habe ich meine Code im Auswahltyp: Listenfeld=>Ereignis=>Beim Klicken=> VBA wird dann ausgeführt wenn ich auf Listenfeld Klicke :)
Allerdings habe ich ein weiteres Problem mit diesem Ausschnitt:
'----------------------------------------------------------
'Wenn Inhalte der Textfelder ungleich sind
'Hintergrund grau,sonst weiß
'----------------------------------------------------------
If Me!Text21 <> Me!Text34 Then
Me!Text21.BackColor = QBColor(7)
Me!Text34.BackColor = QBColor(7)
Else
Me!Text21.BackColor = QBColor(15)
Me!Text34.BackColor = QBColor(15)
End If
If Me!Text23 <> Me!Text36 Then
Me!Text23.BackColor = QBColor(7)
Me!Text36.BackColor = QBColor(7)
Else
Me!Text23.BackColor = QBColor(15)
Me!Text36.BackColor = QBColor(15)
End If
'----------------------------------------------
'Wenn folgende Textfelder ungleich sind
'Warnmeldung wird ausgelöst
'----------------------------------------------
If Me!Text21 <> Me!Text34 Or Me!Text23 <> Me!Text36 Then
MsgBox "Die Daten stimmen nicht überein"
End If
Dieser Code sollte mir die Textfelder aus beiden Projekten die Inhaltlich ungleich sind (nicht korrekt) farblich darstellen, und das mach er auch, aber wenn ich dazu meinen weiteren Code schreibe:
'----------------------------------------------
'Wenn Textfelder-19 und 32 Leer sind,dann werden
'Textfelder 21,23,17,32,34,36,30 grau eingefärbt
'Warnmeldung wird ausgelöst
'-----------------------------------------------
If IsNull(Me!Text19) Then
Me!Text19.BackColor = QBColor(7)
Me!Text21.BackColor = QBColor(7)
Me!Text23.BackColor = QBColor(7)
Me!Text17.BackColor = QBColor(7)
MsgBox "Legen Sie ein neues Projekt in Projekte-1 an: " _
& vbLf & "" _
& vbLf & "Projektnummer: " & Me!Text32 _
& vbLf & "Projektname: " & Me!Text34 _
& vbLf & "Status: " & Me!Text36
Else
Me!Text19.BackColor = QBColor(15)
Me!Text21.BackColor = QBColor(15)
Me!Text23.BackColor = QBColor(15)
Me!Text17.BackColor = QBColor(15)
Debug.Print Me!Text19.Value
End If
If IsNull(Me!Text32) Then
Me!Text32.BackColor = QBColor(7)
Me!Text34.BackColor = QBColor(7)
Me!Text36.BackColor = QBColor(7)
Me!Text30.BackColor = QBColor(7)
MsgBox "Legen Sie ein neues Projekt in Projekte-2 an: " _
& vbLf & "" _
& vbLf & "Projektnummer: " & Me!Text21 _
& vbLf & "Projektname: " & Me!Text23 _
& vbLf & "Status: " & Me!Text17
Else
Me!Text32.BackColor = QBColor(15)
Me!Text34.BackColor = QBColor(15)
Me!Text36.BackColor = QBColor(15)
Me!Text30.BackColor = QBColor(15)
Debug.Print Me!Text19.Value
End If
wenn ich dann eine erste Zeile im Listenfeld anklicke, werden auch weiter Felder, die ich in meinem Code nicht definiert habe farblich markiert.(Siehe Anhang)
Ich sitze schon eine ganze Weile, und kann nicht nachvollziehen, was ich falsch in meinem Code geschrieben habe.
Vielen Dank für Eure Rückmeldungen
Hase
Zitat
... ich habe meine Code im Auswahltyp: Formular=>Ereignis=> Beim Anzeigen -geschrieben, deswegen kam es dazu, dass MsgBox erst geöffnet wurde
Jetzt habe ich meine Code im Auswahltyp: Listenfeld=>Ereignis=>Beim Klicken=> VBA wird dann ausgeführt wenn ich auf Listenfeld Klicke :) ...
das meinte ich mit "Gedanken über Logik machen" ;) Wenn du jetzt deinen Bezeichnern noch sinnvolle Namen spendierst, findest du dich (auch später) leichter in deinem Code zurecht.
Zitatkann nicht nachvollziehen, was ich falsch in meinem Code geschrieben habe.
Teste im Unterbrechungsmodus, dann siehst du was passiert.
Vielen Dank für Eure Tipps ich hab es endlich gelöst!!! :)
Hase