Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Überarbeitung einer kleinen Kunden-/Adreßverwaltung
#1
Hallo zusammen,
unter  Excel VBA-Forum - Das Forum zu Microsoft Excel VBA habe ich schon mal gefragt. Aber da komme ich nicht weiter. Deswegen versuche ich es hier mal, zumal ich hier auch meine Excelmappe hochladen kann.



Ich habe unter Excel 2021 eine Mappe mit Makros angelegt. Dort ein Formular mit mehreren TextBoxen/Labels, 2 ComboBoxen und einem Button zum Speichern.

Geht um eine kleine Kunden-/Adreßverwaltung. Ich würde Euch gerne mal meine Mappe zeigen. Kann ich hier keine Anlagen beifügen?

Ich frage die wichtigsten TextBoxen auf Inhalt ab. Ist kein Eintrag, kommt eine Fehlermeldung.
Gebe ich die Daten ein und klicke auf Speichern, werden die Daten in einer Tabelle reinkopiert. Danach werden die TextBoxen gelöscht, um dann weitere Daten einfügen zu können.

Ich hatte schon was in Facebook-Gruppe (Excel VBA Programmierung | Facebook) geschrieben. Aber mir konnte da scheinbar niemand mehr helfen, es kam zumindest nix mehr.

Ich hatte die Mappe in FB hochgeladen. Jetzt schreibt mir einer, das UserForm sollte sich automatisch öffnen (das bekomme ich noch hin), die Quelltexte könnten optimiert werden und eine Funktion zum Suchen/Ändern von Einträgen. Ich weiß nicht wo ich da was optimieren könnte. Und Daten suchen/ändern, wie mache ich das? Muß ich ein neues zusätzliches Formular für die Suche/Änderung anlegen und dann ne Abfrage machen? Da ich gerade erst ein Fernstudium VBA-Programmierung mache, habe ich noch nicht viele Kenntnisse.



LG
Heiko


Angehängte Dateien
.xlsm   Kunden_Adress_Verwaltung.xlsm (Größe: 18,44 KB / Downloads: 6)
Zitieren
#2
Hallo Heiko,

ich habe mal eine Listobjekt (formatierte Tabelle "Tbl_Stammdaten") draus gemacht und den Code zum Eintragen dazu passend geschrieben.
Code:
Option Explicit

Private Sub cmd_Speichern_Click()
    Dim i&, arrZ(), arrCnt(): arrCnt = Array("cmb_Anrede", "txt_Titel", "txt_Vorname", "txt_Name", "txt_Strasse", "txt_Hausnummer", "txt_PLZ", "txt_Ort", "cmb_Land", "txt_Telefon", "txt_Handy", "txt_EMail", "txt_Internet", "txt_Kundennummer")
    ReDim arrZ(1 To 1, 1 To UBound(arrCnt) + 1)
    For i = LBound(arrCnt) To UBound(arrCnt)
        arrZ(1, i + 1) = Controls(arrCnt(i))
        arrCnt(i) = ""
    Next i
    Tabelle1.ListObjects(1).ListRows.Add.Range.Resize(1, UBound(arrZ, 2)) = arrZ
End Sub

Private Sub UserForm_Initialize()
    cmb_Anrede.List = Array("Frau", "Herr", "Divers")
    cmb_Land.List = Array("Deutschland", "Österreich", "Schweiz", "Spanien")
    cmb_Anrede.ListIndex = 0
    cmb_Land.ListIndex = 0
End Sub
Mehr braucht es dafür eigentlich nicht.

.xlsm   Kunden_Adress_Verwaltung.xlsm (Größe: 23 KB / Downloads: 2)

Gruß Uwe
Zitieren
#3
sorry Pflichtfelder hatte ich vergessen. Die Prozedur mit Pflichtfelder dann so:
Code:
Private Sub cmd_Speichern_Click()
    Dim i&, arrZ(), arrCnt(): arrCnt = Array("cmb_Anrede", "txt_Titel", "txt_Vorname", "txt_Name", "txt_Strasse", "txt_Hausnummer", "txt_PLZ", "txt_Ort", "cmb_Land", "txt_Telefon", "txt_Handy", "txt_EMail", "txt_Internet", "txt_Kundennummer")
    ReDim arrZ(1 To 1, 1 To UBound(arrCnt) + 1)
    For i = 2 To 7
        If Controls(arrCnt(i)) = "" Then
            MsgBox "Das Feld """ & arrCnt(i) & """ darf nicht leer bleiben!", vbExclamation, "fehlende Eingabe"
            Controls(arrCnt(i)).SetFocus
            Exit Sub
        End If
    Next i
    For i = LBound(arrCnt) To UBound(arrCnt)
        arrZ(1, i + 1) = Controls(arrCnt(i))
        arrCnt(i) = ""
    Next i
    Tabelle1.ListObjects(1).ListRows.Add.Range.Resize(1, UBound(arrZ, 2)) = arrZ
End Sub

Gruß Uwe
Zitieren
#4
Hallo Heiko,
 
hier mal ein erster Schritt zum Weg einer brauchbaren Tabellenverwaltung via Userform. Erst mal habe ich nur Neu Eintragen nebst Fehlerbehandlung eingebaut.
Dies funktioniert auf Basis Listobjekt. Den Rest: Filtern / Eintrag ändern / Löschen kann ich bei Bedarf noch nachreichen.
Aber versuche erst mal auf dieser Basis weiter zu bauen.

.xlsm   Kunden_Adress_Verwaltung.xlsm (Größe: 31,37 KB / Downloads: 8)
 
Gruß Uwe
Zitieren
#5
Ein gut strukturiertes Kunden- und Adressverwaltungssystem kann einen großen Unterschied hinsichtlich Effizienz und Datengenauigkeit ausmachen.
Zitieren
#6
Richtig geil wäre es wenn Heiko das ganze hier auch interessieren würde....
Zitieren
#7
Hallo Steve,

ich vermute der ist auf dem Mars verzogen. Big Grin

Gruß Uwe
Zitieren
#8
Hallo zusammen,

ja, es interessiert mich schon noch. Habe jetzt nur länger nix mehr mit VBA gemacht. Hatte nicht den Kopf dazu.

Unsere Mutter war schwer krank und ist am Donnerstag von uns gegangen.

Ich versuche nächste Woche mich wieder mehr mit Excel VBA zu beschäftigen.

LG
Heiko
Zitieren
#9
Guten Abend,

ich habe Probleme den Code zu verstehen:
Private Sub ListBoxLaden()
Dim arrtab(), i&, j&
With Tabelle1.ListObjects(1)
If .DataBodyRange Is Nothing Then Exit Sub
arrtab = .DataBodyRange.Value
ReDim arrList(1 To UBound(arrtab), 1 To UBound(arrtab, 2) + 1)
For i = LBound(arrList) To UBound(arrList)
arrList(i, 1) = i
For j = 2 To UBound(arrList, 2)
arrList(i, j) = arrtab(i, j - 1)
Next j
Next i
End With
ListBox1.List = arrList
End Sub

Was ist Tabelle1.ListObjects(1) ?
Laut Gemini ist ListObjects(1) der 1. Eintrag in der Auflistung. Was für eine Auflistung? Tabelle1 ist doch ein Object oder gibts unter Tabelle1 mehrere Einträge?

DataBodyRange ist der Datenbereich einer intelligenten Tabelle. Was heißt das? Ist das in der Tabelle die einzelnen Zeilen beginnend mit der 2. Zeile (A2, B2, C2...)?

Wenn ich bei UserForm_Initialize() msgbox Tabelle1.ListObjects(1).DataBodyRange und Tabelle1.ListObjects(1).DataBodyRange.Value ausgeben möchte, erhalte ich einen Laufzeitfehler 13: Typen unverträglich.

Was heißt das alles?

Vielen Dank Euch.

LG
Heiko
Zitieren
#10
Dim arrtab() ist ein Array, aber welcher Datentyp? Und wo werden die Elemente des Arrays gesetzt mit ReDim?
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions