Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Problem mit Formular (OptionButton)

Betrifft: Problem mit Formular (OptionButton) von: Anna
Geschrieben am: 16.10.2020 16:31:26

Hallo ihr Lieben,

ich habe folgendes Problem:

Ich habe euch die Tabelle hochgeladen, wenn man auf den Button "Buchen" klickt kommt ein User Formular. Ich möchte, wenn der User einen Betrag eingibt, z.B. 10€, und er dann entweder 5% oder 16% auswählt, dass dann entsprechend entweder in die G Spalte für 5% oder in die H Spalte für 16% eingepflegt wird.

Z.B. Ich gebe beim Betrag 10€ ein und klicke auf 5%, dann wird in der "G" Spalte 0,50 erscheinen, also 10*0,05.

Kann mir da jemand helfen? Bzw. irgendwie fängt mein Code für das "automatisch untereinander" immer bei A4 an, obwohl A3 frei ist. Liegt es an der Farbe? Wie dem auch sei, wer mir da auch behilfiich sein kann, großen Dank.

https://www.herber.de/bbs/user/140915.xlsm

Danke.

Betrifft: AW: Problem mit Formular (OptionButton)
von: Felix
Geschrieben am: 16.10.2020 17:21:33

Hallo Anna,
Private Sub cmd_Click()


Dim rng As Range
  
  Set rng = Sheets("Ein").Range("A65536").End(xlUp).Offset(1, 0)
  With rng
    
   ' .Offset(6, 0) = Format(txtDatum, "dd.mm.yyyy")
    .Offset(0, 8) = TextBox7.Text
     .Offset(0, 5) = TextBox5.Text
    '.Offset(0, 0) = txtObjekt.Text
   ' .Offset(0, 8) = TextBox2.Text

End With
Unload Me

End Sub

Das ist dein bisheriger Code zum einfügen des Datensatzes. Theoretisch funktionierts und es scheiden sich auch die Geister welche Möglichkeit die Eleganteste ist.


Ich habe mich daran gewöhnt die UsedRange.Rows.Count +1 Methode zu nutzen. Dabei prüft Excel welcher Bereich des Tabellenblatts benutzt ist, zählt die Zeilen und gibt dann einen Wert zurück. Dadurch kann man die nächste freie Zeile ermitteln.

Private Sub cmd_Click()

Dim zeile As Long

zeile = Sheets("Ein").UsedRange.Rows.Count + 1

With Sheets("Ein")
  
  .Cells(zeile, 1) = TextBox1.Text
  .Cells(zeile, 2) = TextBox2.Text
  .Cells(zeile, 3) = TextBox3.Text
  .Cells(zeile, 4) = TextBox4.Text
  .Cells(zeile, 5) = Month(CDate(TextBox4.Text))
  .Cells(zeile, 6) = TextBox5.Text
  If OptionButton1.Value = True Then .Cells(zeile, 7) = TextBox5.Text * 0.05
  If OptionButton2.Value = True Then .Cells(zeile, 8) = TextBox5.Text * 0.16
  .Cells(zeile, 9) = TextBox7.Text
  
End With
Unload Me

End Sub
Das wäre mein Alternativcode, die Steuersätze hab ich mit einer If-Funktion gelöst. Viel Spaß mit dem Code :)
Gruß Felix

Betrifft: AW: Problem mit Formular (OptionButton)
von: Daniel
Geschrieben am: 16.10.2020 17:28:45

Hi
das hängt mit deiner "intelligenten Tabelle" zusammen.
wenn die auflöst und in einem "normalen" Tabellenblatt arbeitest, dann funktioniert der Code richtig.
ich vermute mal, dass in der "intelligenten Tabelle" die Überschriftenzeile gesondert behandelt wird.

also entweder die "intelligente Tabelle" auflösen, oder eine Prüfung einbauen und das Offset nur ausführen, wenn die Zelle nicht leer ist, ansonsten in dieser Zeile bleiben.
Set rng = Sheets("Ein").Range("A65536").End(xlUp)
if rng.value <> "" the set rng = rng.Offset(1, 0)
dir ist aber schon klar, dass Spalte A dann immer mit gefüllt werden muss, wenn auch die nächsten Buchungen richtig eingetragen werden sollen?

Gruß Daniel