UF mit Suche nach Adressen in 2ter Tabelle

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    UF mit Suche nach Adressen in 2ter Tabelle

    Hallo,

    ich habe eine Datei mit 2 Tabellen ("Factura") und ("Direcciones"), hier soll von der ersten Tabelle mittels einer UF auf das 2te Dabellenblatt zugegriffen werden.

    Die UF funktioniert schon mit allen Funktionen, wenn ich die auf der Tabelle ("Direcciones") aufrufe.

    Wie müsste ich die Unten eingefügten Codes ändern, damit die UF beim Aufrufen von Seite 1 auf Seite 2 zugreift. Da stehe ich gerade irgendwie auf der Leitung ?(

    Neue Adresse eintragen:

    Visual Basic-Quellcode

    1. Private Sub btnNuevo_Click()
    2. 'Tabellenzeile hinzufügen'
    3. With Adressen.ListObjects("tblDirecciones").ListRows.Add
    4. 'Tabellenzeile befüllen'
    5. .Range(, 1).Value = txtSaludo.Value
    6. .Range(, 2).Value = txtNombre.Value
    7. .Range(, 3).Value = txtApellidos.Value
    8. .Range(, 4).Value = txtCalle.Value
    9. .Range(, 5).Value = txtLugar.Value
    10. .Range(, 6).Value = txtTelefono.Value
    11. .Range(, 7).Value = txtCorreos.Value
    12. End With
    13. 'UserForm schließen'
    14. Unload Eingabe
    15. End Sub


    Suchefunktion:

    Visual Basic-Quellcode

    1. Private Sub cbbuscar_Click()
    2. Set finden = Columns(3).Find(What:=txtbuscar)
    3. If finden Is Nothing Then
    4. MsgBox "Es wurde Kunde mit dem Namen gefunden."
    5. Else
    6. txtSaludo = finden.Offset(0, -2)
    7. txtNombre = finden.Offset(0, -1)
    8. txtApellidos = finden.Offset(0, 0)
    9. txtCalle = finden.Offset(0, 1)
    10. txtLugar = finden.Offset(0, 2)
    11. txtTelefono = finden.Offset(0, 3)
    12. txtCorreos = finden.Offset(0, 4)
    13. End If
    14. End Sub


    Weitere Adresse eintragen:

    Visual Basic-Quellcode

    1. Private Sub cbMas_Click()
    2. 'Tabellenzeile befüllen'
    3. With Adressen.ListObjects("tblDirecciones").ListRows.Add
    4. 'Tabellenzeile befüllen'
    5. .Range(, 1).Value = txtSaludo.Value
    6. .Range(, 2).Value = txtNombre.Value
    7. .Range(, 3).Value = txtApellidos.Value
    8. .Range(, 4).Value = txtCalle.Value
    9. .Range(, 5).Value = txtLugar.Value
    10. .Range(, 6).Value = txtTelefono.Value
    11. .Range(, 7).Value = txtCorreos.Value
    12. End With
    13. 'Zellinhalt löschen'
    14. Me.txtSaludo.Text = ""
    15. Me.txtVNombre.Text = ""
    16. Me.txtApellidos.Text = ""
    17. Me.txtCalle.Text = ""
    18. Me.txtLugar.Text = ""
    19. Me.txtTelefono.Text = ""
    20. Me.txtCorreos.Text = ""
    21. End Sub


    Vielen Dank schon Mal.

    VG René

    Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Da frage ich mich gerade wirklich, was an dem Code editiert worden sein soll??? ?(

    Die von mir eingestellten hatten ja, wenn ich die Userform von Seite/Tabelle 2 aufrufe, funktioniert. Nur nicht, wenn ich die Userform von Seite/Tabelle 1 aus aufrufe. Dann öffnet zwar die Userform, nur greift die nicht auf die in Tabelle 2 ("Adressen") gespeicherten Daten zu.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cendes“ ()

    Cendes schrieb:

    Da frage ich mich gerade wirklich, was an dem Code editiert worden sein soll?
    Die Lesbarkeit des Codes. Anscheinend hattest du keine Code-Tags verwendet.

    Cendes schrieb:

    Dann öffnet zwar die Userform, nur greift die nicht auf die in Tabelle 2 ("Adressen") gespeicherten Daten zu.
    Du adressierst die Daten der aktiven Tabelle.
    Set finden = Columns(3).Find(What:=txtbuscar)​
    Gib statt dessen den Range an, der die Daten beinhaltet

    Visual Basic-Quellcode

    1. ​Set finden = Tabelle2.Columns(3).Find(What:=txtbuscar)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Super, danke... Hat funktioniert.

    Sind diese Codes so richtig?

    Userform ist auf Tabellen Blatt 1 / Daten auf Tabellenblatt 2

    'Adressen auslesen'

    Visual Basic-Quellcode

    1. lbAdressen.Tabelle2.ColumnHeads = True
    2. lbAdressen.Tabelle2.ColumnCount = 7
    3. lbAdressen.Tabelle2.RowSource = Adressen.Range("tblAdressen").Address
    4. End Sub


    Übernahme der angeklickten Adresse in Adressfelder

    Visual Basic-Quellcode

    1. Private Sub lbAdressen_Click()
    2. ' bei Klick in die Listbox werden die daten aus der Tabelle eingelesen'
    3. Dim Datensatz As Integer
    4. Datensatz = Adressen.lbAdressen.ListIndex + 2
    5. With UserForm1
    6. txtAnrede.Text = Tabelle2.Selection.Cells(Datensatz, 1)
    7. txtVorname.Text = Tabelle2.Selection.Cells(Datensatz, 2)
    8. txtNachname.Text = Tabelle2.Selection.Cells(Datensatz, 3)
    9. txtStrasse.Text = Tabelle2.Selection.Cells(Datensatz, 4)
    10. txtOrt.Text = Tabelle2.Selection.Cells(Datensatz, 5)
    11. End With
    12. End Sub


    Neuanlage von Adressen

    Visual Basic-Quellcode

    1. Private Sub btnAnlegen_Click()
    2. Neuanlage von Adressen
    3. 'Tabellenzeile hinzufügen'
    4. With Adressen.ListObjects("tblAdressen").ListRows.Add
    5. 'Tabellenzeile befüllen'
    6. Tabelle2.Range(, 1).Value = txtAnrede.Value
    7. Tabelle2.Range(, 2).Value = txtVorname.Value
    8. Tabelle2.Range(, 3).Value = txtNachname.Value
    9. Tabelle2.Range(, 4).Value = txtStrasse.Value
    10. Tabelle2.Range(, 5).Value = txtOrt.Value
    11. Tabelle2.Range(, 6).Value = txtTelefon.Value
    12. Tabelle2.Range(, 7).Value = txtEmail.Value
    13. End With
    14. 'UserForm schließen'
    15. Unload Eingabe
    16. End Sub


    Gruß René

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Cendes“ ()

    Bitte Code-Tags verwenden!
    Anleitung:
    [Forum] Welche BBCodes (Tags) gibt es hier im Forum zum Einfärben von Quellcodes (Syntax-Highlighting)?

    Cendes schrieb:

    lbAdressen.Tabelle2.ColumnCount = 7

    Was ist lbAdressen für ein Objekt?

    Cendes schrieb:

    txtAnrede.Text = Tabelle2.Selection.Cells(Datensatz, 1)

    Wieso Selection? Macht keinen Sinn, es sei denn, du willst irgendwas von Hand auswählen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Habe die Codes wie gewünscht bearbeitet. Sorry, war keine Absicht es nicht zu machen

    lbAdressen ist die ListBox, in der die Adressen, etc. stehen.

    ich möchte, wenn in der Listbox mit den Adressen eine per Maus angeklickt wird, das diese Adresse in die Bearbeitungsmaske eingefügt werden.

    Cendes schrieb:

    lbAdressen ist die ListBox, in der die Adressen, etc. stehen.
    Aber eine ListBox hat doch keine Eigenschaft Tabelle.

    Setz doch mal einen Breakpoint und schau dir das Objekt an.
    Vermutlich läuft er nicht mal rein, weil er das gar nicht kompilieren kann.

    Und setze in der ersten Zeile ein Option Explicit.
    Dann kompilierst du das Projekt von Hand (siehe Anhang) und lässt dich überraschen, was er für Fehlermeldungen auf Lager hat.
    Bilder
    • Bild_2024-06-23_012007529.png

      16,55 kB, 740×107, 8 mal angesehen
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Guten Morgen,
    nochmal zur besseren Erläuterung. Ich möchte von Seite/Tabellenblatt eine Userform aufrufen zwecks Eintragung von Daten in Formulare. Das klappt soweit auch schon.

    Nur habe ich mit der Listbox, in welcher ich Daten, welche auf Seite/Tabellenblatt 2 liegen, Probleme.

    Dieser Code funktioniert in der Listbox, wenn ich die Userform auf Tabellenblatt 2 (enthält die Daten) aufrufe. Ich möchte, wenn ich in der Listbox auf einzelne Einträge klicke, sollen diese in die genannten Textfelder übernommen werden.

    Visual Basic-Quellcode

    1. Private Sub lbAdressen_Click()
    2. ' bei Klick in die Listbox werden die daten aus der Tabelle eingelesen
    3. Dim Datensatz As Integer
    4. Datensatz = lbAdressen.ListIndex + 2
    5. With Eingabe
    6. txtAnrede.Text = Selection.Cells(Datensatz, 1)
    7. txtVorname.Text = Selection.Cells(Datensatz, 2)
    8. txtNachname.Text = Selection.Cells(Datensatz, 3)
    9. txtStrasse.Text = Selection.Cells(Datensatz, 4)
    10. txtOrt.Text = Selection.Cells(Datensatz, 5)
    11. End With
    12. End Sub


    Das Initialisieren der Listbox funktioniert, wenn diese von Seite 2 aufgerufen wird. Nur nicht von Seite 1 aus. Wo habe ich hier den Fehler??

    Visual Basic-Quellcode

    1. Private Sub UserForm_Initialize()
    2. lbAdressen.ColumnHeads = True
    3. lbAdressen.ColumnCount = 5
    4. lbAdressen.RowSource = Adressen.Range("tblAdressen").Address
    5. End Sub



    Das Eingeben neuer Adressen in die Tabelle funktioniert, wenn ich die Userform von Seite 2 aufrufe. Nur nicht von Seite 1 aus. Wo habe ich hier den Fehler??

    Visual Basic-Quellcode

    1. Private Sub btnAnlegen_Click()
    2. 'Tabellenzeile hinzufügen'
    3. With Adressen.ListObjects("tblAdressen").ListRows.Add
    4. 'Tabellenzeile befüllen'
    5. .Range(, 1).Value = txtAnrede.Value
    6. .Range(, 2).Value = txtVorname.Value
    7. .Range(, 3).Value = txtNachname.Value
    8. .Range(, 4).Value = txtStrasse.Value
    9. .Range(, 5).Value = txtOrt.Value
    10. .Range(, 6).Value = txtTelefon.Value
    11. .Range(, 7).Value = txtEmail.Value
    12. End With
    13. 'UserForm schließen'
    14. Unload Eingabe
    15. End Sub


    Vielleicht kann mir, bin Anfänger, hier einer helfen.

    Cendes schrieb:

    Ich möchte, wenn ich in der Listbox auf einzelne Einträge klicke, sollen diese in die genannten Textfelder übernommen werden.
    Dann musst das entsprechende Event abonnieren.
    Oder läuft er in lbAdressen_Click rein?
    Breakpoint gesetzt?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --