Thema Datum  Von Nutzer Rating
Antwort
24.10.2020 16:16:15 DoubleDenU
NotSolved
24.10.2020 16:24:46 Mase
NotSolved
24.10.2020 16:31:34 DoubleDenU
NotSolved
24.10.2020 16:46:16 Mase
NotSolved
24.10.2020 16:50:34 Mase
NotSolved
24.10.2020 17:45:47 DoubleDenU
NotSolved
24.10.2020 18:01:31 Mase
NotSolved
24.10.2020 19:03:05 Gast14218
NotSolved
24.10.2020 21:02:14 DoubleDenU
NotSolved
Blau Kundendaten bearbeiten, Anzeigen
25.10.2020 03:25:23 Gast14218
NotSolved

Ansicht des Beitrags:
Von:
Gast14218
Datum:
25.10.2020 03:25:23
Views:
524
Rating: Antwort:
  Ja
Thema:
Kundendaten bearbeiten, Anzeigen

Wie Mase schon angesprochen hat, kann man die Suche verbessern. Darum soll es hier aber nicht gehen.


Also, die UserForm:

'
' Klassenmodul: UserForm1
'
Option Explicit

Private m_wksRef As Excel.Worksheet
Private m_lngZeile As Long

Public Function SetSource(Worksheet As Excel.Worksheet, Zeile As Long) As Boolean
    
    If Worksheet Is Nothing Or Zeile <= 0 Then
        Call Err.Raise(5, Source:=Me.Name) 'invalid call or arguments
    End If
    
    Set m_wksRef = Worksheet
    m_lngZeile = Zeile
    
    With m_wksRef
        TextBox_Name.Value = .Cells(m_lngZeile, 2).Value
        TextBox_Tel.Value = .Cells(m_lngZeile, 3).Value
        ComboBox1.Value = .Cells(m_lngZeile, 4).Value
        TextBox_Typ.Value = .Cells(m_lngZeile, 5).Value
        TextBox_Schluessel.Value = .Cells(m_lngZeile, 6).Value
        TextBox_HU.Value = .Cells(m_lngZeile, 7).Value
        TextBox_Notizen.Value = .Cells(m_lngZeile, 9).Value
    End With
    
    SetSource = True
    
End Function

Private Sub Button_ok_Click()
    
    If TextBox_Name = "" Then
        MsgBox "Du musst einen Namen eintragen!"
        Unload Me
    Else
        With m_wksRef
            .Cells(m_lngZeile, 2).Value = TextBox_Name
            .Cells(m_lngZeile, 3).Value = TextBox_Tel
            .Cells(m_lngZeile, 4).Value = ComboBox1
            .Cells(m_lngZeile, 5).Value = TextBox_Typ
            .Cells(m_lngZeile, 6).Value = TextBox_Schluessel
            .Cells(m_lngZeile, 7).Value = TextBox_HU
            .Cells(m_lngZeile, 9).Value = TextBox_Notizen
        End With
        MsgBox "Kundendaten wurden erfolgreich gespeichert"
    End If
    
End Sub

'Dieses Ereignis tritt auf, wenn das Fenster den Fokus erhält
Private Sub UserForm_Activate()
    If m_wksRef Is Nothing Or m_lngZeile <= 0 Then
        'Me.SetSource wurde vor Me.Show nicht aufgerufen
        Call MsgBox("'" & Me.Name & " wurde nicht korrekt initialisiert.", vbCritical)
        Unload Me
    End If
End Sub

'Dieses Ereignis tritt einmalig bei Erstellung der Instanz auf (z.B. Set usf = New UserForm1)
Private Sub UserForm_Initialize()
    '...
End Sub

Die eigens erstellte Methode SetSource dient dazu, das Tabellenblatt und die Daten-Zeile zu setzen, über die die UserForm die Daten lesen/schreiben soll und muss vor UserForm1.Show aufgerufen worden sein.

Beachte bitte das die UserForm hier auf korrektem Weg per Unload Me entladen wird.

(UserForm1 ist nur eine Instanz von UserForm1; man kann jedoch mehrere Instanzen davon - bei Bedarf - erzeugen; auf die gegenwärtige Instanz bezieht man sich mit Me)


Der Aufruf der UserForm1 im Modul:

'
' Modul
'
Option Explicit

Sub KundenSuche()
    
    Dim blnErfolg As Boolean
    Dim AnzZahlen As Long
    Dim kD As Integer
    Dim i As Long
    
    With Worksheets("Kontakte")
        
        AnzZahlen = .UsedRange.Rows.Count
        kD = Application.InputBox("Bitte Kundennummer angeben", "Kundennummer", Type:=1)
        
        For i = 1 To AnzZahlen
            If kD = .Cells(i, 1).Value Then
                blnErfolg = UserForm1.SetSource(Worksheet:=.Range("A1").Worksheet, Zeile:=i)
                'wir haben unseren Eintrag gefunden,
                ' kein Grund mehr weiter die Zeilen abzuklappern ;)
                Exit For
            End If
        Next
    End With
    
    If blnErfolg Then
        MsgBox "Kunden gefunden"
        UserForm1.Show
    Else
        MsgBox "Kundennummer nicht vorhanden" & Chr(10) & "Bitte erneut eingeben!", vbCritical, "Fehler"
    End If
    
End Sub

Wie gesagt, die Suche kann man besser gestalten und es gibt hier und da auch noch Punkte die nicht so sauber sind. Darum soll es hier aber nicht gehen.

Soweit das Ganze...

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.10.2020 16:16:15 DoubleDenU
NotSolved
24.10.2020 16:24:46 Mase
NotSolved
24.10.2020 16:31:34 DoubleDenU
NotSolved
24.10.2020 16:46:16 Mase
NotSolved
24.10.2020 16:50:34 Mase
NotSolved
24.10.2020 17:45:47 DoubleDenU
NotSolved
24.10.2020 18:01:31 Mase
NotSolved
24.10.2020 19:03:05 Gast14218
NotSolved
24.10.2020 21:02:14 DoubleDenU
NotSolved
Blau Kundendaten bearbeiten, Anzeigen
25.10.2020 03:25:23 Gast14218
NotSolved