Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
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
Datenbank mit Listboxen, Textboxen, Checkboxen
08.06.2017 12:31:53
Mitsue
Hallo ihr Lieben,
Ich arbeite erst seit kurzem mit Excel VBA und bin wirklich kein Profi. Ich habe eine Userform mit diversen TextBoxen, Checkboxen, Optionbuttons und Listbox mit Checkboxen erstellt. Das ist der bisherige Code:
Private Sub CommandButton1_Click()
Dim cNum As Integer
Dim X As Integer
Dim nextrow As Range
cNum = 58
Set nextrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
For X = 1 To cNum
nextrow = Me.Controls("Reg" & X).Value
Set nextrow = nextrow.Offset(0, 1)
Next
For X = 1 To cNum
Me.Controls("Reg" & X).Value = ""
Next
End Sub

Ich habe alle Steuerelemente als Reg1, Reg2 etc. benannt.Ich habe außerdem einen button eingefügt, mit dem die Daten in eine Datenbank im ersten Tabellenblatt übertragen werden. Ich habe momentan folgende Probleme:
1. Öffnet man die Userform und bestätigt keinen der Checkboxen, Textfelder, etc. werden trotzdem alle Daten in die Datenbank übertragen. Wie muss ich den Code ändern, damit wirklich nur die Daten übertragen werden, die auch wirklich bearbeitet oder angeklickt wurden?
2. Die Listboxen mit Checkboxen die ich erstellt habe, werden überhaupt nicht in die Datenbank übertragen, gibt es eine Möglichkeit wie ich jeder einzelnen Checkbox innerhalb der Listbox einen eigenen Namen geben kann, damit diese auch übertragen werden?
3. Wie ist es möglich einem Button eine Passwortabfrage hinzuzufügen, damit nicht jeder den Button benutzen kann?
Vielen Vielen Dank im Voraus ich Danke euch!
LG Mitsue

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbank mit Listboxen, Textboxen, Checkboxen
08.06.2017 12:57:23
ChrisL
Hi
1.
Mit dem Code kannst du ja keine bestehenden Daten "bearbeiten", sondern nur neue Einträge erzeugen. Somit würde ich die Pflichtfelder definieren und CommandButton1 erst aktivieren (Enable = True), wenn die Pflichtfelder gefüllt sind.
Hier ein Beispiel mit 3 TextBoxen, wobei TextBox 1+3 Pflichtfelder sind.
Private Sub Reg1_Change()
Call PflichtfelderCheck
End Sub

Private Sub Reg3_Change()
Call PflichtfelderCheck
End Sub

Private Sub PflichtfelderCheck()
Dim ar As Variant, i As Integer
ar = Array(1, 3) ' hier weitere ergänzen
For i = 0 To UBound(ar)
If Controls("Reg" & ar(i)) = "" Then Exit Sub
Next i
CommandButton1.Enabled = True
End Sub

2.
Ich vermute du meinst eine ListBox mit Eigenschaft MultiSelect resp. StyleOption. Keine Ahnung wie du dies in die Tabelle übertragen willst (Datenstruktur), aber die ListBox müsste in einer Schleife abgearbeitet werden. Hier ein Beispiel:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then MsgBox ListBox1.List(i, 0)
Next i
End Sub
3.
Private Sub CommandButton1_Click()
If InputBox("Passwort")  "Passwort" Then Exit Sub
MsgBox "weiter gehts"
End Sub
cu
Chris
Anzeige
AW: Datenbank mit Listboxen, Textboxen, Checkboxen
08.06.2017 16:04:09
Mitsue
Hallo Chris! :)
Vielen lieben Dank für deine Hilfe!
1. Ich glaube hierbei hast du mich falsch verstanden. Ich möchte keine Daten bearbeiten, meine Datei funktioniert wie eine Umfrage, die an verschiedene Personen versendet werden soll. Was ich meinte war z.B. folgendes:
Essen Sie lieber Käse oder Schinken?
Optionbutton1 = Käse
Optionbutton2 = Schinken
Wählt der Leser jetzt keines der beiden aus, erscheint in der Datenbank trotzdem immer False. Ich möchte aber wenn nichts angeklickt wurde, dass auch nichts dort erscheint. Wenn etwas angeklickt wurde, soll dann auch nicht True dort stehen sondern zb Käse. Ist das möglich?
2. Das hat leider auch nicht funktioniert. Ich hab die Listbox1 mit "Reg8" bezeichnet. Ist es möglich jetzt z.B. die erste Checkbox "Reg9" zu nennen usw.? Damit auch erkannt wird, dass es übertragen wird? Wenn ich jede einzelne Box als Checkbox erzeuge werde ich alt....
3. Das hat hervorragend funktioniert! Danke dir !! :)
LG Mitsue und vielen Dank!
Anzeige
AW: Datenbank mit Listboxen, Textboxen, Checkboxen
08.06.2017 17:47:30
ChrisL
Hi Mitsue
Gibt übrigens nette Seiten für Online-Umfragen, dann kannst du dir den VBA-Grundlagen-Kurs sparen ;)
1.
Grundsätzlich hat ein Optionbutton den Wert Wahr/Falsch. Die Werte überträgst du ja dann in einzelne Spalten, dann macht Wahr/Falsch auch Sinn resp. solltest du dir frühzeitig Gedanken machen, in welcher Struktur du es für die anschliessende Auswertung brauchst. Spaltenweise eine Summe resp. Anzahl bilden ist einfacher, wie wenn du anschliessend mit ZÄHLENWENN oder Pivot ran gehst.
Ansonsten müsstest du wohl eine Ausnahme programmieren.
https://www.herber.de/forum/archiv/1320to1324/1323290_Optionsbutton_Text_uebertragen.html
2.
Ich bin mir leider weiterhin unsicher, ob du von einer ListBox (mit StyleOption) oder vom Steuerelement CheckBox sprichst.
Falls ListBox mit MultiSelect, dann lautet die Antwort nein. Die muss man in einer Schleife abarbeiten und darum eben die Frage, wie du das Ergebnis nachher in die Tabelle quetschen willst (Datenstruktur).
Punkt 1 würde ich vergessen und im Rahmen der Auswertung lösen. Wenn du in Punkt 2 etwas konkreter wirst d.h. eine kleine Beispieldatei mit Userform, ein paar Steuerelementen und Datenstruktur (gewünschtes Ergebnis), dann kann man den Muster-Code (für die ListBox Ausnahme) erstellen.
cu
Chris
Anzeige
AW: Datenbank mit Listboxen, Textboxen, Checkboxen
09.06.2017 08:16:09
Mitsue
Hallo Chris! :)
Vielen Dank nochmal für deine Mühe! Folgendes:
1. Müsste es aber nicht so gehen? Nur müsste man die Range irgendwie ändern, damit es nicht in einer speziellen Zelle landet sondern wie der rest auch immer in der nächsten Freien. Wie müsste man den Code dann schreiben? Also was müsste dort in Klammer stehen?
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Tabelle2.Range("B45") = "Käse"
Else
Tabelle2.Range("B45") = "-"
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Tabelle2.Range("C45") = "Schinken"
Else
Tabelle2.Range("C45") = "-"
End If
End Sub

2. Tut mir Leid, ja ich spreche von einer Listbox mit mit StyleOption. Es gibt ja z.B. auch die Möglichkeit eine Dropdownliste mit Mehrfachauswahl zu nehmen und dann jeden ausgewählten Wert in eine Zelle schreiben zu lassen z.B. Käse, Schinken, Wurst. Ich habe bisher aber nur gesehen, dass man dies im regulären Sheet anwenden kann, nicht aber in einer Userform. Ist das in einer Userform möglich?
Danke und liebe Grüße
Mitsue
Anzeige
AW: Datenbank mit Listboxen, Textboxen, Checkboxen
09.06.2017 08:43:18
ChrisL
Hi
1.
Ja geht so. Aber da der Übertrag mittels Button erfolgt, kannst du es nicht in das Click-Ereignis schreiben. Du müsstest also im Makro vom CommandButton die Nummern der OptionButtons als Ausnahme definieren (im Beispiel 4 und 5):
Private Sub CommandButton1_Click()
Dim letzteZeile As Long, X As Integer
With Sheet1
letzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
For X = 1 To 58
Select Case X
Case 4
If Me.Controls("Reg" & X).Value = True Then
.Cells(letzteZeile, X) = "Käse"
Else
.Cells(letzteZeile, X) = "-"
End If
Case 5
If Me.Controls("Reg" & X).Value = True Then
.Cells(letzteZeile, X) = "Wurst"
Else
.Cells(letzteZeile, X) = "-"
End If
Case Else
.Cells(letzteZeile, X) = Me.Controls("Reg" & X).Value
End Select
Next X
End With
End Sub

2. ListBox und ComboBox (ActiveX) sind technisch fast das Gleiche und es ist egal ob in Tabelle oder Userform.
cu
Chris
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige