Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

Eingabemaske-Kommentare

Eingabemaske-Kommentare
04.04.2014 14:20:49
Dauergast
Hallo,
ich habe folgende Eingabemaske mit dem nachfolgenden Code erstellt. Ich habe ihn auch mit Kommentaren versehen und wollte fragen, ob die eurer Meinung nach ausreichen? Oder was würdet Ihr an den Kommentaren verbessern?
Option Explicit
Option Compare Text
Private Sub CommandButton1_Click()
'Button neuer Eintrag
ClearFields
ListBox1.ListIndex = -1 'neue Zeile wird ausgewählt
TextBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
'Button Eintrag löschen
Dim lIndex As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lIndex = ListBox1.ListIndex
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
Tabelle1.Rows(ListBox1.Column(1)).Delete
UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = _
WorksheetFunction.Min(lIndex, ListBox1.ListCount - 1)
'Wenn Datensatz in der ListBox markiert wurde, wird der Eintrag gelöscht
End Sub

Private Sub CommandButton3_Click()
'Button Eintrag speichern
Dim lZeile As Long, lIndex As Long
If ListBox1.ListIndex = -1 Then
lZeile = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Wenn kein Datensatz in der ListBox markiert wurde, wird Speicherroutine beendet
Else
lZeile = ListBox1.Column(1) 'Wenn Datensatz vorhanden, wird Speicherroutine durchgeführt
End If
lIndex = ListBox1.ListIndex
If Trim(TextBox1.Text) = "" Then
Exit Sub
Else
With Tabelle1
.Cells(lZeile, 1).Value = Trim(TextBox1.Text)
.Cells(lZeile, 2).Value = TextBox2.Text
.Cells(lZeile, 3).Value = TextBox3.Text
.Cells(lZeile, 4).Value = TextBox4.Text
.Cells(lZeile, 5).Value = TextBox5.Text
.Cells(lZeile, 6).Value = TextBox6.Text
.Cells(lZeile, 7).Value = TextBox7.Text
.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).Value = TextBox12.Text
.Cells(lZeile, 14).Value = TextBox13.Text
.Cells(lZeile, 15).Value = TextBox14.Text
.Cells(lZeile, 16).Value = TextBox15.Text
.Cells(lZeile, 21).Value = TextBox16.Text
.Cells(lZeile, 26).Value = TextBox17.Text
.Cells(lZeile, 30).Value = TextBox18.Text
.Cells(lZeile, 31).Value = TextBox19.Text
.Cells(lZeile, 34).Value = TextBox20.Text
.Cells(lZeile, 35).Value = TextBox21.Text
.Cells(lZeile, 46).Value = TextBox22.Text
.Cells(lZeile, 47).Value = TextBox23.Text
.Cells(lZeile, 48).Value = TextBox24.Text
'Textboxen in die Zellen schreiben
End With
End If
UserForm_Initialize
If lIndex = -1 Then
ListBox1.ListIndex = ListBox1.ListCount - 1
Else
'Die ListBox muss nun neu geladen werden, allerdings nur, wenn sich der Name geändert hat
ListBox1.ListIndex = lIndex
End If
End Sub

Private Sub CommandButton4_Click()
'Button Beenden
Unload Me
End Sub

Private Sub ListBox1_Click()
'ListBox Funktionsweise
Dim lZeile As Long
'Wenn der Benutzer einen Namen anklickt, wird dieser herausgesucht und die Daten werden in  _
die Textboxen eingetragen
ClearFields
If ListBox1.ListIndex > -1 Then
lZeile = ListBox1.Column(1)
With Tabelle1
TextBox1 = Trim(.Cells(lZeile, 1).Value)
TextBox2 = .Cells(lZeile, 2).Value
TextBox3 = .Cells(lZeile, 3).Value
TextBox4 = .Cells(lZeile, 4).Value
TextBox5 = .Cells(lZeile, 5).Value
TextBox6 = .Cells(lZeile, 6).Value
TextBox7 = .Cells(lZeile, 7).Value
TextBox8 = .Cells(lZeile, 8).Value
TextBox9 = .Cells(lZeile, 9).Value
TextBox10 = .Cells(lZeile, 10).Value
TextBox11 = .Cells(lZeile, 11).Value
TextBox12 = .Cells(lZeile, 12).Value
TextBox13 = .Cells(lZeile, 14).Value
TextBox14 = .Cells(lZeile, 15).Value
TextBox15 = .Cells(lZeile, 16).Value
TextBox16 = .Cells(lZeile, 21).Value
TextBox17 = .Cells(lZeile, 26).Value
TextBox18 = .Cells(lZeile, 30).Value
TextBox19 = .Cells(lZeile, 31).Value
TextBox20 = .Cells(lZeile, 34).Value
TextBox21 = .Cells(lZeile, 35).Value
TextBox22 = .Cells(lZeile, 46).Value
TextBox23 = .Cells(lZeile, 47).Value
TextBox24 = .Cells(lZeile, 48).Value
'Textboxen füllen
End With
End If
End Sub

Private Sub UserForm_Initialize()
'UserForm Funktionsweise
Dim lZeile As Long, arrList
ClearFields 'Alle Textboxen leeren
With Tabelle1
arrList = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 2)
End With
For lZeile = 1 To UBound(arrList)
arrList(lZeile, 2) = lZeile + 1 'Start in Zeile 2, da in Zeile 1 Überschriften
Next
ListBox1.List = arrList
'alle vorhandenen Einträge werden in die Listbox geladen
End Sub

Private Sub ClearFields()
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
TextBox16 = ""
TextBox17 = ""
TextBox18 = ""
TextBox19 = ""
TextBox20 = ""
TextBox21 = ""
TextBox22 = ""
TextBox23 = ""
TextBox24 = ""
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabemaske-Kommentare
04.04.2014 16:56:04
fcs
Hallo dauergast,
Kommentare im Code sind Geschmackssache.
Meine Meinung lieber einen Kommentar mehr als einen zu wenig. Kommentare sollten so plaziert werden, dass du nach längerer Zeit oder ggf. auch ein anderer Programmierer die Funktionen der Makros leicht verstehen und nachvollziehen können.
Was mir bei deinen Kommentaren auffällt: Sie stehen oft an der falschen Position.
Ich würde Sie immer vor den entsprechenden Codeabschnitt schreiben oder bei kurzen Kommentaren in die jeweilige Zeile.
Beispiel:
Private Sub CommandButton2_Click()
'Button Eintrag löschen
Dim lIndex As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Wenn Datensatz in der ListBox markiert wurde, wird der Eintrag gelöscht
lIndex = ListBox1.ListIndex
Tabelle1.Rows(ListBox1.Column(1)).Delete
UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = _
WorksheetFunction.Min(lIndex, ListBox1.ListCount - 1)
End Sub
Ich hätte die Prozedur allerdings mit Info für den Anwender und Sicherheitsabfrage für das Löschen geschrieben. Dann sind Komentare fast überflüssig.
Private Sub CommandButton2_Click()
'Button Eintrag löschen
Dim lIndex As Long
If ListBox1.ListIndex = -1 Then
MsgBox "In der Listbox ist kein zu löschender Datensatz markiert", _
vbOKOnly, "Datensatz löschen"
Else
If MsgBox("In der Listbox markierten Datensatz löschen?", _
vbOKCancel + vbQuestion, "Datensatz löschen") = vbOK Then
lIndex = ListBox1.ListIndex
Tabelle1.Rows(ListBox1.Column(1)).Delete
UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = _
WorksheetFunction.Min(lIndex, ListBox1.ListCount - 1)
End If
End If
End Sub

Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige