AW: Geburtstag
17.03.2013 00:27:49
Erich
Hi Mario,
im Code der UserForm, speziell in der Prozedur "CommandButton2_Click()", steht einfach zu oft "Activate"
oder "ActiveCell".
Aktiv kann eine Zelle nur sein, wenn auch das Blatt "Daten", zu dem sie gehört, aktiv ist.
Das ist aber hier nicht so. Aktiv ist normalerweise das Blatt "Tabelle1", von dem aus die UF gestartet wird.
Das produziert hier den Fehler 1004.
Probier mal, ob das Suchen funktioniert, wenn du die Prozedur "CommandButton2_Click()"
durch den folgenden Code ersetzt:
' suchen gemäß Nach-/Familiennamen
Private Sub CommandButton2_Click()
Dim WkSh As Worksheet
Dim lLetzte As Long
Dim myRange As Range
Dim strAddress As String
Dim bolAbbruch As Boolean
Me.CommandButton3.Enabled = False ' den Änder-Button sperren
Me.CommandButton4.Enabled = False ' den Lösch-Button sperren
Set WkSh = ThisWorkbook.Worksheets("Daten")
lLetzte = WkSh.Cells(WkSh.Rows.Count, 1).End(xlUp).Row
If lLetzte strAddress Then
' myRange.Activate
FundZeile = myRange.Row 'ActiveCell.Row
GoSub Anzeigen
End If
End If
Loop While Not myRange Is Nothing And myRange.Address strAddress
If Not bolAbbruch Then
MsgBox "Keine weiteren Datensätze gefunden.", _
48, " Information für " & Application.UserName
FundZeile = 0
Else
MsgBox "Keinen übereinstimmenden Datensatz gefunden", _
48, " Information für " & Application.UserName
FundZeile = 0
End If
Else
MsgBox "Keinen übereinstimmenden Datensatz gefunden", _
48, " Information für " & Application.UserName
FundZeile = 0
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End With
End If
Me.CommandButton3.Enabled = False ' den Änder-Button sperren
Me.CommandButton4.Enabled = False ' den Lösch-Button sperren
Exit Sub
Anzeigen:
If FundZeile = 0 Then Exit Sub
TextBox1.Value = myRange.Offset(0, 0).Value ' Familienname
TextBox2.Value = myRange.Offset(0, 1).Value ' Vorname
TextBox3.Value = myRange.Offset(0, 2).Value ' Straßenname
TextBox4.Value = myRange.Offset(0, 3).Value ' Postleitzahl
TextBox5.Value = myRange.Offset(0, 4).Value ' Ortsname
If myRange.Offset(0, 5).Value "" Then
If IsDate(myRange.Offset(0, 5).Value) Then
TextBox6.Value = _
Format(myRange.Offset(0, 5).Value, "dd.mm.yyyy ddd") ' Geburtstag
ElseIf IsDate(Left(myRange.Offset(0, 5).Value, _
Len(myRange.Offset(0, 5).Value) - 3)) Then
TextBox6.Value = _
Format(myRange.Offset(0, 5).Value, "dd.mm.yyyy ddd") ' Geburtstag
End If
End If
TextBox7.Value = myRange.Offset(0, 6).Value ' Telefon
TextBox8.Value = myRange.Offset(0, 7).Value ' Parzelle
CommandButton3.Enabled = True ' den Änder-Button freigeben
CommandButton4.Enabled = True ' den Lösch-Button freigeben
Return
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
P.S. zur Sortierung nach Monaten: Kann auch das Blatt "Daten" schon so sortiert werden?
Soll das Sortieren in VBA erfolgen oder wäre das besser mit einer Formel und dem Excel-Sort?