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

Datenbankeintrag per UserForm ändern

Datenbankeintrag per UserForm ändern
29.01.2020 11:38:42
Bo
Hallo,
ich möchte mit Hilfe einer UserForm Einträge aus einer Datenbank verändern, bzw. löschen. Hierzu soll der Nutzer zuerst eine fest definierte Referenz in Text_Ref eingeben, wonach die anderen Felder der UserForm (Comboxen, Listen, usw.) automatisch mit den Werte aus des bestimmten Datensatzes ausgefüllt werden. Anschließend können dann Änderungen vorgenommen werden. Ereignisbasiert hätte ich mittext_Ref_Enter das Ausfüllen der Werte veranlassen wollen. Gibt es hierzu eine schlanke Lösung, um nach der Eingabe der Text_Ref, das Tabellenblatt nach dem Eintrag zu durchsuchen und dann in die Felder mit denn entsprechenden Auswahlmöglichkeiten anzuzeigen und später zu speichern?
Private Sub Text_Ref_Enter()
Dim lastE As Integer, lastRef As String
Dim wsE As Worksheet
Dim i As Integer
Set wsE = ThisWorkbook.Worksheets("Einsätze")
wsE.Activate
lastE = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
For i = 3 To lastE
If Me.Text_Ref.Value = wsE.Cells(i, 2).Value Then
Me.List_Name.Value = wsE.Cells(i, 3).Value
Me.List_Vorname.Value = wsE.Cells(i, 4).Value
Me.List_Projekt.Value = wsE.Cells(i, 7).Value
Me.List_Art.Value = wsE.Cells(i, 6).Value
End If
Next

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbankeintrag per UserForm ändern
29.01.2020 12:57:07
ChrisL
Hi
Z.B.
Sub Text_Ref_Enter()
Dim lngZeile As Long
With ThisWorkbook.Worksheets("Einsätze")
If WorksheetFunction.CountIf(.Columns(2), ext_Ref) = 0 Then
MsgBox "ID exisitert nicht"
Exit Sub
Else
lngZeile = Application.Match(ext_Ref, .Columns(2), 0)
Me.List_Name.Value = wsE.Cells(lngZeile, 3).Value
Me.List_Vorname.Value = wsE.Cells(lngZeile, 4).Value
Me.List_Projekt.Value = wsE.Cells(lngZeile, 7).Value
Me.List_Art.Value = wsE.Cells(lngZeile, 6).Value
End If
End With
End Sub
cu
Chris
AW: Datenbankeintrag per UserForm ändern
29.01.2020 15:20:48
Bo
Hi Chris,
danke für die schnelle Antwort, nur bekomme ich leider in Zeile einen Typenfehler.
lngZeile = Application.Match(Text_Ref, .Columns(2), 0)
Woran könnte das liegen?
LG
Anzeige
AW: Datenbankeintrag per UserForm ändern
29.01.2020 15:25:27
ChrisL
Hi
ups, ein paar Buchstaben verloren... nicht ext_Ref sondern: Me.Text_Ref.Value
cu
Chris
AW: Datenbankeintrag per UserForm ändern
29.01.2020 15:57:22
Bo
Hi,
bekomme leider den gleichen Fehler. Habe auch mal versucht .Columns(2) separat zu definieren, was aber auch keinen Unterschied gemacht hat.

Sub Text_Ref_Enter()
Dim lngZeile As Long, wsE As Worksheet
With ThisWorkbook.Worksheets("Einsätze")
If WorksheetFunction.CountIf(.Columns(2), Text_Ref.Value) = 0 Then
MsgBox "Referenz exisitert nicht"
Exit Sub
Else
lngZeile = Application.Match(Text_Ref.Value, .Columns(2), 0)
Me.List_Name.Value = wsE.Cells(lngZeile, 3).Value
Me.List_Vorname.Value = wsE.Cells(lngZeile, 4).Value
Me.List_Projekt.Value = wsE.Cells(lngZeile, 7).Value
Me.List_Art.Value = wsE.Cells(lngZeile, 6).Value
End If
End With
End Sub

Anzeige
AW: Datenbankeintrag per UserForm ändern
29.01.2020 19:28:52
ChrisL
Hi
Typenfehler würde bedeuten, dass z.B. Text mit Zahl verglichen wird etc. (unterschiedliche Datentypen)
Müsste man mal wissen welcher Wert genau im Steuerelement (Textbox?) und was in der Tabelle steht. Am einfachsten gleich eine Beispieldatei hochladen (bitte keine Bilddateien).
Evtl. falsches Dezimaltrennzeichen oder in der Tabelle stehen Texte die aussehen wie Zahlen.
cu
Chris
AW: Datenbankeintrag per UserForm ändern
30.01.2020 09:24:38
Bo
Hallo Chris,
leider ist die Datei vertraulich, weshalb ich sie hier natürlich nicht veröffentlichen kann. Allerdings kann ich versuchen, die Typen bzw. deren Formatierung so zu erläutern. Vielleicht lässt sich der Fehler ja so finden.
.Columns(2) hat z.B. den Wert 2020_01_023 und ist mit NumberFormatLocal = "0000_00_000" über ein anderes Sub formatiert .
Text_Ref wird so bei Übernehmen_Click übernommen: .Cells(last, 2).Value = Me.Text_Ref.Value
zur Sicherheit formatiere ich anschließend nochmal: .Cells(last, 2).NumberFormatLocal = "0000_00_000"
Anzeige
AW: Datenbankeintrag per UserForm ändern
30.01.2020 17:44:29
ChrisL
Hi
Die vertraulichen Daten kannst du löschen, aber es wäre halt schon wichtig, mal ein Beispiel zu sehen, womit man den Fehler reproduzieren kann.
Der Wert 2020_01_023 wäre Datentyp String/Text.
Der Wert sollte eigentlich 202010023 (=Zahl) sein und die Formatierung macht daraus die Ansicht 2020_01_023
Wenn dem so wäre, müsste man den Textbox-Inhalt zuerst in eine Zahl umwandeln d.h. Underline/Strich entfernen und als Zahl dimensionieren.
CLng(Replace(Textbox, "_", ""))
Allerdings widerspricht dies der Übergabe:
.Cells(last, 2).Value = Me.Text_Ref.Value
Je nach Textbox Inhalt wird hier Text übertragen (somit wäre die anschliessende Formatierung sinnlos) oder wenn es ganz dumm läuft, interpretiert Excel den Wert sogar als Datum 23.1.2020, wobei ich annehme dass die Zahl 23 eher eine Laufnummer darstellt.
Komisch ist auch, dass der Typenfehler nicht schon bei CountIf (Zählenwenn) auftritt, sondern erst bei Match (Vergleich).
cu
Chris
Anzeige
AW: Datenbankeintrag per UserForm ändern
31.01.2020 08:08:14
Bo
Hi Chris,
vielen Dank für die ausführliche Antwort.
Ich habe mich jetzt dazu entschieden eine alternative, eindeutige Referenz zu erstellen, die aus einsatzspezifischen Daten besteht, dh. ich erspare mir das Thema fortlaufende Nummer am Ende und kann die einzelnen Referenzbausteine aus dem eigentlichen Datensatz abfragen. Z.B. über Initialien usw. Teilweise zerschneide ich den Datensatz und setze ihn zu einer eindeutigen Referenz wieder zusammen. Es entsteht also keine Abhängigkeit zum darüberstehenden Datensatz.
Vielen Dank trotzdem

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige