Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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
Inhaltsverzeichnis

Checkbox default false

Checkbox default false
10.12.2014 07:58:57
Markus
Guten Morgen,
Frage wie kann ich einer checkbox sagen das sie solange false ist bis ich sie anklicke?
(False = 0 (soll eine 0 in der spalte/zeile stehen)
(true = 1 (soll eine 1 drinnen stehen) (Aber nur wenn ich sie bewusst anklicke.)
ist das möglich?
lg

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox default false
10.12.2014 08:23:55
hary
Moin
Hier wird die Zahl in A1 geschrieben.
Private Sub CheckBox1_Click()
Range("A1") = Not CheckBox1 - 1
End Sub

gruss hary

AW: Checkbox default false
10.12.2014 08:48:29
Markus
das wäre mein code wo das implementiert gehört ...
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1 = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
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
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1 = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1 = False
ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub

Anzeige
AW: Checkbox default false
10.12.2014 09:05:12
hary
Moin
Du hast nur eine Checkbox drin!?
Setz den Code in den Code der Box.
Aber wo du das Ergebniss zeigen lassen willst ist mir ein Raetsel.
gruss hary

AW: Checkbox default false
10.12.2014 09:14:54
Markus
zur zeit ja test halber .. sollen dann mehr werden so an die hmm.. 100...
in spalte 12

CheckBox1 = Tabelle1.Cells(lZeile, 12).Value
naja so wie du das geschrieben hast funkt das ned ganz ...
das ist von mir

If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
nur weis ich eben nicht wie ich ihm sage er soll default mässig auf "" (emty) sein er hinterlegt mir irgendwie die checkbox im modul so komisch ... und es funktioniert nur dann wenn ich die checkbox anklicke dann ist es ihm egal ob sie true or false ist dann funktioniert sie aber das problem ist eben das ich sie erst einmal anklicken muss also mich entscheiden muss damit sie funktioniert .. das ist wenn ich so an die 100 dann habe etwas mühsam soll so funktionieren das Default mässig alle auf "" stehen und wenn z.b. eine true ist dann soll "1" stehen.

Anzeige
AW: Checkbox default false
10.12.2014 09:24:36
hary
Moin
Muss ich passen. Versteh ich nicht.
Aber du kannst direkt in der Listbox Optionsbutton anzeigen lassen.
Schau mal unter der Eigenschaft der Listbox: ListStyle auf Option setzen.
Dann hasr du vor jedem Eintrag was zum auswaehlen.
gruss hary

AW: Checkbox default false
10.12.2014 09:28:49
Markus
i hab gehoft das ich ihm einfach irgendwie seinen default wert sagen kann ...
siehe foto .. und es kommt eine fehlermeldung wenn ich die checkbox nicht anklicke sobald ich sie einmal angeklickt habe funktioniert sowohl true als auch false... muss nur das einmal anklicken wegbekommen..
Userbild

Anzeige
AW: Checkbox default false
10.12.2014 09:42:20
hary
Moin
Versuch mal statt:
If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If

einfach nur dies:
CheckBox1 = False
Tabelle1.Cells(lZeile, 12) = ""

gruss hary

AW: Checkbox default false
10.12.2014 09:53:12
Markus
ok und wo sagst du ihm dann wenn es true ist das er eine 1 reinschreiben soll ?

AW: Checkbox default false
10.12.2014 09:59:10
hary
Moin
1. True setzt du doch durch Haken setzen in der Checkbox?
2. Oder wird auch mit Code der Haken gesetzt?
Wenn 1. dann brauchst du fuer jede Box einen Code oder Klassenmodul.
Beschreib mal fuer was du 100 Boxen brauchst.
gruss hary

Anzeige
AW: Checkbox default false
10.12.2014 10:01:43
Markus
ja, durch haken setzen manuel.
neben jeder checkbox kommt ein möglicher fehler von div. geräten und natürlich hat nicht jedes gerät einen fehler bzw. nur eine gewisse anzahl die eine variable ist ..
lösung?

AW: Checkbox default false
10.12.2014 13:35:10
hary
Moin
Ich glaube 'ne Bsp.-Mappe waere von Vorteil.
gruss hary

AW: Checkbox default false
10.12.2014 15:27:52
Markus
habs schon gefunden danke euch (auser ihr habt ne bessere lösung) :)
Private Sub CheckBox1_Click()
End Sub
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
CheckBox1.Value = False
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1.Value Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Value = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
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
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1.Value = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm1_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Enabled = True
CheckBox1.Value = False
ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub

Anzeige
AW: Checkbox default false
10.12.2014 15:41:36
Markus
hey,
Das komische ist jetzt nur das es nicht mehr funktioniert mit der ListBox1 ( sollten normalerweise alle erstellten daten drinnen stehen und wählbar sein.. das heist soviele einträge wie gemacht worden sind werden alle dort angezeigt und können nach gebessert werden .. oder auch gelöscht werden aber sobald ich die "userForm" schließe und wieder öffne sind die daten weg stehen nicht mehr in der Listbox1 obwohl ich den befehl "listbox1.clear" deaktiviert habe jemand eine idee?
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
CheckBox1.Value = False
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1.Value Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Value = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
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
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1.Value = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm1_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm1_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Enabled = True
CheckBox1.Value = False
' ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub

Anzeige
AW: Checkbox default false
10.12.2014 16:56:46
fcs
Hallo Markus,
generell solltest du dir überlegen, ob du statt vielen einzelnen Checkboxen nicht besser mit Listboxen mit Mehrfachauswahl arbeitest. Listboxen lassen sich in der Programmierung einfacher Handhaben.
Für die Checkboxen kannst du den Code wie folgt anpassen, damit "1" und "" korrekt eingelesen bzw. eingetragen werden.
Bei vielen Checkboxen kannst mit einer Schleife arbeiten, du must dann "nur" darauf achten dass die Nummern der Checkboxen in der gleichen Reihenfolge wie die Spalten sind.
                 'Checkbox Werte aus Tabelle einlesen
'bei wenigen  Checkboxen:
CheckBox1 = Tabelle1.Cells(lZeile, 12).Value = 1
'bei vielen Checkboxen z.B
Dim i As Integer, Anzahl As Integer
Anzahl = 2 'Anzahl der Checkboxen
For i = 1 To Anzahl
Me.Controls("CheckBox" & i) = Tabelle1.Cells(lZeile, 11 + i).Value = 1
Next
             'Einzelne Checkboxwerte in Tabelle schreiben
Tabelle1.Cells(lZeile, 12) = IIf(Me.CheckBox1, 1, "")
'Viele Checkboxwerte in Tabelle schreiben
Dim i As Integer, Anzahl As Integer
Anzahl = 2 'Anzahl der Checkboxen
For i = 1 To Anzahl
Tabelle1.Cells(lZeile, 11 + i) = IIf(Me.Controls("CheckBox" & i), 1, "")
Next
In der Initialisierungsprozedur muss du die Checkboxen nicht auf False setzen.
Du kannst unter den Eigenschaften der Checkbox diese unter Value auf False setzen.
Gruß
Franz

Anzeige
AW: Checkbox default false
10.12.2014 17:07:14
Markus
danke dir werd ich ausprobieren..
Weist du zufällig auch warum das aufeinmal nicht mehr geht (vorher beschrieben habe mit ListBox1)
Danke

AW: Checkbox default false
10.12.2014 18:55:17
fcs
Hallo Markus,
in deiner Beispieldatei hat die Listbox1 zur Auswahl der Datensätze funktioniert.
Deshalb kann ich zu deinem Problem nichts sagen.
Gruß
Franz

AW: Checkbox default false
11.12.2014 06:17:37
Markus
ok
du startest es nur und die listbox ist mit den letzten einträgen gefüllt?
(mein test : Starte es mache 2 neue einträge speicher sie jeweils einzeln immer auf speichern gehen beende es starte es neu und klicke auf listbox da kommt bei mir dann die letzten 2 einträge nicht)

Anzeige
AW: Checkbox default false
12.12.2014 08:07:45
fcs
Hallo Markus,
du startest es nur und die listbox ist mit den letzten einträgen gefüllt?

Ja.
Ich hab jetzt noch ein wenig getestet.
Es gibt Proleme,wenn ein Datensatz gelöscht wird. Das passiert durch die Art wie du die ID festlegst.
Du verwendest die Zeilennummer. Wird ein Datensatz gelöscht, dann kann eine ID mehrfach vorkommen, wenn ein neuer Eintrag angelegt wird. Besser ist es hier den Max-Wert der ID zu ermitteln und für einen neuen Eintrag den Wert um 1 zu erhöhen.
Weiter sollte für Textbox3 die Eingabe auf Datum geprüft werden und dann der Text in ein Datum umgewandelt werden, damit in der Tabelle ein Datum und nicht Text steht.
Vor dem Löschen eines Eintrags sollte eine Sicherheitsabfrage eingebaut sein, um versehentliches löschen zu verhindern.
Gruß
Franz
https://www.herber.de/bbs/user/94350.xlsm

Anzeige
AW: Checkbox default false
15.12.2014 08:21:43
Markus
Guten Morgen,
Werds gleich nochmal ausprobieren.
Danke dir

AW: Checkbox default false
15.12.2014 09:04:10
Markus
Eine frage noch wie kann ich es nun so machen das er z.b. von zeile 7-107 immer dann reinschreibt wenn das datum in der mitte 01 beträgt ( 01.01.2015 für jänner 7-107)
Für Feb. (02) von 109 - 210...
usw
und dann noch in das richtige tabellen blatt schreibt das heist z.b. eine drop auswahl mit den tabellenblättern z.b. a b c d
wenn man auswählt B und is datum ist z.b. der 12.02.2015 soll er die daten was man eingegeben hat ins tabellenplat B schreiben und dort in die zeile 109-210 (in die die leer ist also wenn in 109 schon was steht soll er es in 110 schreiben usw.
danke euch

AW: Checkbox default false
15.12.2014 10:03:58
fcs
Hallo Markus,
warum machst du dir das Leben unnötig schwer?
Kannst du nicht einfach alle Einträge in eine Tabelle eintragen? Ohne all den Heckmeck mit Monaten, Zeilenbereichen, unterschiedlichen Tabellenblättern.
Diese Tabelle kannst du doch dann beliebig sortieren und/oder filtern um die Daten in der gewünschten Reihenfolge anzuzeigen.
Was du vorhast kann mann machen. Dazu muss aber als erstest die Zieltabelle in der Combobox ausgewählt werden. Danach muss die Combobox mit den Datensatz-IDs aktualisiert werden, damit sie zu dem gewählten Tabellenblatt passt.
Überall im Code muss dann das jetzt fixe Tabellenblatt Tabelle1. ersetz werden durch das Variable Worksheets(Combobox2.Value).
Für neue Datensätze müßte die Zeile dann immer entsprechend deiner koplizierten Vorgabe gesucht werden - nächste frei Zeile entsprechend Monat in einem bestimmten Zeilenbereich.
Und du meinst, das bastelt dir jetzt jemand alles um ohne eine neue Beispieldatei mit dem letzten Stand von Userform und Code?
Ich jedenfalls nicht, denn zum Testen müßte man die Tabellenblätter erst einaml so aufbauen, wie du sie dir vorstellst. Und wer kennt sich in deinem Kopf schon aus?.
Gruß
Franz

AW: Checkbox default false
15.12.2014 10:31:39
Markus
Warum mach ich das weil es seit 5 jahren nicht funktioniert das es einwandfrei mit der eingabe funktioniert das sheet besteht sehr viel aus formeln und die paar spalten / Punkte die man eintragen muss werden zwar immer gemacht aber wie auch immer (trotz sperre) bekommen es die eingeber (mehrere leute) immer wieder hin das das sheet kaputt ist und man unnötig viel zeit investieren muss damit sie wieder funktioniert.
Nein nur vllt die ein oder andere formel die ich mir dann umschreibe ... (für einen monat aber eben ned das ganze jahr usw. nur kenn ich mich leider ned sogut mit vba aus ich brauch einen anfang mit dem ich dann abwandeln kann ...
Die ganze tabelle mit tabellenblätter gibt es schon so wie sie jetzt ist (mit allen formeln usw. )
lg

Tabellen per Userform bearbeiten
15.12.2014 16:44:14
fcs
Hallo Markus,
ich fang jetzt mal wieder links bei den Antworten an.
Ich hab jetzt mal versucht deine Wunschliste umzusetzen. Das war eine Menge Arbeit, da insbesondere sämtliche Do-Loop-Schleifen in For-Next-Schleifen umgewandelt werden mussten.
Da du für die Monate in den einzelnen Blättern feste Zeilenbereiche vorgeben möchtest dürfen beim Löschen nicht mehr die kompletten Zeilen(Zellen) gelöscht werden, sondern nur noch die Inhalte (ggf. nur die Inhalte in den Zellen, die per Userform ausgefüllt werden).
Das Datum muss über eine Schaltfläche geändert werden, da jetzt der Datensatz in einen anderen Zeilenbereich verschoben werden muss, wenn das Datum den Monat wechselt. Ich hab für die Datumseingabe ein extra Userform eingebaut.
Auch bei einem neuen Datensatz muss das Datum über dieses Userform eingegeben werden, damit der Datensatz im korrekten Monatsbereich angelegt wird.
Ich hoffe du kommst mit der Vielzahl der Änderungen klar.
Gruß
Franz
https://www.herber.de/bbs/user/94424.xlsm

AW: Tabellen per Userform bearbeiten
15.12.2014 16:54:28
Markus
Danke dir werd ich mir gleich anschauen und morgen berichten :-)
Danke dir

AW: Tabellen per Userform bearbeiten
16.12.2014 09:26:43
Markus
Erster bericht :
Schaut sehr geil aus kenn mich soweit auch aus nur eines versteh bzw. bekomm i nicht mehr wirklich hin im code...
und zwar hat man bei meiner version die ID ändern können weil die ID eigentlich eine variable seriennummer sein sollte die man händisch eingeben kann
hast du dazu eine möglichkeit für mich noch?
und wenn man löschen drückt soll das gelöschte in eine tabelle gespeichert werden die natürlich nur der admin sehen kann?
werde die woche es einmal umlegen auf das original sheet und dann berichten.
gibt es eine möglichkeit das die Userform automatisch wenn man das excel sheet öffnet sich die userform öffnet ?
und wie Sperre ich alles ? (also den code und das sheet? das normale anwender nur über die userform eingeben/löschen können ?

AW: Tabellen per Userform bearbeiten
16.12.2014 13:43:44
Markus
Bericht2,
Irgendwie auch wenn ich die zellen so in der tabelle formatiere auf "Zahl" oder wie sie eben gehören .. funktionieren meine formeln nicht er erkennt die "eingabe" in der tabelle nicht ?
Warum? was mach ich falsch?
lg

AW: Tabellen per Userform bearbeiten
16.12.2014 16:00:56
fcs
Hallo Markus,
was du falsch machst ist schwierig zu schreiben/sagen, wenn man dir nicht über die Schultern kuckt.
Wahrscheinlich hast du in den Zellen einen Mischmasch von Zahlen, die echte Zahlen sind und Zahlen, die als Text in Zellen stehen.
Ursachen für den Mischmasch:
Entweder kommen die Daten schon aus der Quelle so,
oder die Eingabezellen sind als Text formatiert
oder Userform-Eintragen werden als Text in die Zellen geschrieben.
Letzteres kann man durch entsprechende Prüfungen und Umwandlungen vermeiden. siehe nachfolgende Ergänzungen für den userform-Code.
Dieser MischMasch von Zahlen/Texten bereitet insbesondere bei SVERWEIS, VERGLEICH und ähnlichen Funktionen Probleme. Mit den Funktion TEXT und/oder WERT kann man manchmal das Suchkriterium so modifizieren, dass es mit den Werten in der Suchspalte harmoniert.
Besser ist es aber das Übel möglichst radikal zu bereinigen und die Zellformatierungen und Zellinhalt in ein einheitliches Format zu wandeln, so das die Formeln in der gewünschten Form funktionieren.
Was da bei di in der Datei im Detail zu machen ist kann man nicht per Ferndiagnose klären.
Gruß
Franz
Private Sub prcZahlinZelle(rngZelle As Range, strText As String)
If strText = "" Then
rngZelle.ClearContents
ElseIf IsNumeric(strText) Then
rngZelle.Value = CDbl(strText)
Else
rngZelle.Value = strText
End If
End Sub
Private Sub CommandButton3_Click()
'Datensatz Speichern
Dim lZeile As Long
Dim varID As Variant
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox2.Text)) = "" Or Trim(CStr(TextBox3.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen und das Datum eingeben!", _
vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
With wksZiel
'Zeile mit ID suchen
lZeile = fncZeile_zu_ID(varID:=ListBox1.Text)
If lZeile > 0 Then
Call BlattschutzAUS(wksZiel)
.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text)) '
.Cells(lZeile, 2).Value = TextBox2.Text
With TextBox3
If IsDate(.Text) Then
wksZiel.Cells(lZeile, 3).Value = CDate(.Text)
ElseIf .Text = "" Then
wksZiel.Cells(lZeile, 3).ClearContents
Else
wksZiel.Cells(lZeile, 3).Value = .Text
End If
End With
.Cells(lZeile, 4).Value = TextBox4.Text
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 5), strText:=TextBox5.Text) 'Spalte
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 6), strText:=TextBox6.Text) 'Zeile
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 7), strText:=TextBox7.Text) ' _
Priorität
.Cells(lZeile, 8).Value = TextBox8.Text
.Cells(lZeile, 9).Value = TextBox9.Text
.Cells(lZeile, 10).Value = TextBox10.Text
.Cells(lZeile, 11).Value = TextBox11.Text
.Cells(lZeile, 12) = IIf(Me.CheckBox1.Value = True, 1, "")
Call BlattschutzEIN(wksZiel)
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
varID = Trim(CStr(TextBox1.Text))
Call prcListbox1_Auswahlliste
If ListBox1.ListCount > 0 Then ListBox1.Value = varID
End If
End If
End With 'wksZiel
End Sub

AW: Tabellen per Userform bearbeiten
16.12.2014 15:01:56
fcs
Hallo Markus,
ID ändern:
bei der Textbox1 hab ich die Eigenschaft "Locked" wieder auf False gesetzt. So kann die ID wieder geändert werden. Beim Verlassen der Textbox wird geprüft, ob die eingegebene ID schon vorhanden ist, so können keine Dppeleingaben vorkommen.
Löschen:
Ich hab ein Blatt "Gelöschte" angelegt. Dessen Visible-Status ist auf xlVeryHidden gesetzt und kann nur via Makro oder über die Eigenschaften im VBA-Editor eingeblendet werden.
Vor dem Löschen wird die entsprechende Zeile ans Ende der Liste in diesem Blatt kopiert. Username, DatumZeit, und Blattname werden hinter den Daten zusätzlich eingetragen.
Userform automatisch anzeigen:
Hierzu sind unter DieseArbeitsmappe entsprechende Makros angelegt.
Blattschutz:
Diesen hab ich schon integriert. Dafür hab ich zwei Makros eingerichtet mit denen der Schutz EIN-/AUS-geschaltet werden kann.
Im Code des Userforms werden diese Makros aufgerufen vor und nach dem Ändern von Daten in Tabellenblättern.
Passwort ist zur Zeit "". Dies kannst du im Modul "Modul_UF" anpassen, indem du den Wert der Variable strPW änderst. Vorher mit dem entsprechenden Makro den Blattschutz für alle Blätter deaktivieren.
VBA-Projekt schützen:
Das geht via VBA-Editor, Menü Extras--VBA-projekt Eigenschaften -- Register Schutz
Das dürfte dann erst einmal genug Stoff zum studieren sein.
Gruß
Franz
https://www.herber.de/bbs/user/94443.xlsm

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige