Clever-Excel-Forum

Normale Version: Optionbutton soll mehrere Funktionen auslösen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

bin noch blutiger Anfänger und versuche mich gerade an der 1. VBA-Programmierung. Vieles konnte ich aus dem Forum herauslesen und für mich umsetzen. Bisher soweit, sogut. Doch jetzt stoße ich an eine Grenze:

Ich bastele derzeit an einer Userform (Userform3), die als Eingabe für ein Rechnungsformular dienen soll.
In diesem Formular gibt es einen Optionbutton, der folgendes auslösen soll:

Wenn aus, dann soll nebenstehendes eMail-Feld leer bleiben. Weiter unten soll das Feld "Porto" zu einem Mussfeld werden. Wenn an, soll aus aus dem Textfeld 3, welches die Adresse aus der Tabelle 1 generiert, nur noch der Name stehen, das "Porto-Textfeld" grau hinterlegen und inaktiv machen.

Ich hoffe, ich habe mich nicht zu undeutlich ausgedruckt. Zum besseren Verständnis habe ich meine "Baustelle" einfach mal angehängt. Ich freue mich schon auf Eure Lösungsvorschläge
Servus kulis,

bist ja schon richtig weit gekommen, prima!

Versuch' mal das Mussfeld beim Verlassen der Userform abzufragen ...

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim Check As Boolean
   
    Check = True
    If OptionButton1.Value = True Then
        If IsNumeric(TextBox31.Value) Then
            If CDbl(TextBox31.Value) = 0 Then
                Check = False
            End If
        Else
            Check = False
        End If
    End If
   
    If Not Check Then
        MsgBox "Bitte ein gültiges Porto eintragen", vbCritical, "FEHLER"
        TextBox31.SetFocus
        Cancel = True
    End If
End Sub

LG Gerd
Hi,
und bei
"Private Sub optionButton1_Click()"

die Zeile
TextBox4Text = "OK"
ersetzen mit
TextBox4.Value = "OK"


Diesen Block in Userform 1:
Code:
TextBox1 = ""
     TextBox2 = ""
     TextBox3 = ""
     TextBox4 = ""
     TextBox5 = ""
     TextBox6 = ""
     TextBox7 = ""
     TextBox8 = ""
     TextBox9 = ""

kannst Du durch diese 3 Zeilen ersetzen:
Code:
For i = 1 To 9            'alle auf "" setzen
         Me.Controls("TextBox" & i).Value = ""
      Next i

Und diesen Block
Code:
'TextBoxen füllen
                 TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
                 TextBox2 = Tabelle1.Cells(lZeile, 2).Value
                 TextBox3 = Tabelle1.Cells(lZeile, 3).Value
                 TextBox4 = Tabelle1.Cells(lZeile, 4).Value
                 TextBox5 = Tabelle1.Cells(lZeile, 5).Value
                 TextBox6 = Tabelle1.Cells(lZeile, 6).Value
                 TextBox7 = Tabelle1.Cells(lZeile, 7).Value
                 TextBox8 = Tabelle1.Cells(lZeile, 8).Value
                 TextBox9 = Tabelle1.Cells(lZeile, 9).Value

durch
Code:
'TextBoxen füllen
                 With Tabelle1
                  TextBox1 = Trim(CStr(.Cells(lZeile, 1).Value))
                  For i = 2 To 9            'Inhalt setzen
                        Me.Controls("TextBox" & i).Value = .Cells(lZeile, i).Value
                  Next i
                 End With

an den anderen Stellen analog:
Code:
With Tabelle1
                  .Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
               For i = 2 To 9            'Inhalt setzen
                  .Cells(lZeile, i).Value = Me.Controls("TextBox" & i).Text
               Next i
            End With
... dann setzen wir gleich noch einen drauf :)

Um in einer TextBox nur Zahlen und Komma zuzulassen, könntest Du diesen Beispielcode verwenden:

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Select Case KeyAscii
    Case 48 To 57, 44
    Case Else: KeyAscii = 0
    MsgBox "Nur Zahlen erlaubt", vbCritical, "FEHLER"
  End Select
End Sub
LG Gerd
Hi,

und eine Nachfrage:

Was ist "Me.Dirty"?
Guten Morgen und vielen Dank für die Hilfe,

ich habe die Codes eingebaut. Allerdings machen sie noch nicht das Richtige.

Wichtig ist, dass eine Rechnung nur ausgedruckt werden kann, wenn der Optionbutton aktiv ist. Das Schließen der Userform geschieht über einen "Zurück"-Button. da ist das egal. D.h. die msg muss auf den "Druckbutton gelegt werden, bevor er das "Drucken-Macro ausführen kann. Was auch noch nicht funktioniert ist, den Option-Button wieder abzuwählen. Da würde ich Euch gerne nochmal bemühen.
Das Ausdrucken einer Rechnung mit den eingegebenen Werten funktioniert inzwischen auch schon. Das Rechnungsformular habe ich als Tabelle erstellt, so dass ich von dort die Gesamtsummen in der Userform anzeigen lassen kann. Ebenfalls sollen aus der Tabelle "Rechnungen" die Werte in die Buchführung übernommen werden. Da denke ich aber, reichen meine Excel Kenntnisse aus. Die aktuelle Version hängt wieder an.

Und @ Rabe, mir fiel der Code auf die Schnelle nicht ein, habe mich daher auf die ersten "Übungsstunden" bezogen und die "einfache Variante" genommen. Du hast natürlich recht. Sobald mein Projekt einigermaßen läuft, werde ich "aufräumen"[attachment=14959]
Servus kulis,

dann lösche mal den Code oben wieder und verwende diesen hier für Deinen Button2:

Code:
Private Sub CommandButton2_Click()
    Dim Check As Boolean
  
    Check = True
    If OptionButton1.Value = True Then
        If IsNumeric(TextBox31.Value) Then
            If CDbl(TextBox31.Value) = 0 Then
                Check = False
            End If
        Else
            Check = False
        End If
    End If
  
    If Not Check Then
        MsgBox "Bitte ein gültiges Porto eintragen", vbCritical, "FEHLER"
        TextBox31.SetFocus
        Exit Sub
    End If

    ....

Verwende am besten ein Kontrollkästchen (Checkbox) statt einem Optionbutton. Im Kontrollkästchen kann man den Haken wieder entfernen :)

LG Gerd
Guten Morgen,

so, ich habe den Code eingebaut. Es funktioniert. Allerdings sollen die FEhlermeldungen erst kommen, wenn der "Drucken"-Button gedrückt wird. Der Drucken-Button ist mit einem Makro hinterlegt. Hier soll die Fehlermeldung kommen, bevor das Makro durchläuft. Jetzt bekomme ich schon automatisch eine Fehlermeldung, wenn ich nur das Häckchen setze.
Mhm ... dann hast Du das Script an der falschen Stelle eingefügt?
Ist Dein "Drucken"-Button CommandButton2?
Das stimmt. Ist Button2
Seiten: 1 2