Datum umwandeln


josef24

Erfahrenes Mitglied
#21
Möchte mich erst mal ganz herzlich bedanken. Habe mal alle Spaltennamen ergänzt, wobei ich hoffe nichts übersehen zu haben.
Jetzt motzt er bei "Private sub clearform" in Spalte "Eintritt". Hab die Aktualisierung der Tabelle mal angehängt, und bitte dich, nochmal einen Blick darein zu werfen. Nochmal Danke bis dahin und Gruß Josef
 

Anhänge

#23
Es reicht nicht aus, die Namen nur im Code zu ändern. Dann weiss VBA ja gar nicht was für ein Feld das ist. Du must den Feldnamen entsprechen auch im Formular ändern

(Vergiss den Punkt 3 im Bild. Der ist mir reingerutscht)
2017-11-08_083428.png
 
#26
OK, hab da was gefunden. Ich weiss nicht, ob der Fehler mir oder dir passeirt ist.
Visual Basic:
Private Sub lstData_Click()
    Dim lZeile As Long
    Dim rngRow As Range
    Dim id As String
   
    id = Trim(CStr(rngRow.Cells(lZeile, colAtNummer).Value))
    clearForm
    If lstData.ListIndex >= 0 Then
        If seekArb(id, rngRow) Then
rngRow word erst in bei seekArb() initialisiert. Somit kann vorgängig die ID nicht aus diesem Array ausgelesen werden. Auch ist lZeile an dieser Stelle noch 0.
Du willst dort auch die ID aus der Liste nehmen und nicht die aus irgend einer beliebigen Zeile
Visual Basic:
'ersetze
 id = Trim(CStr(rngRow.Cells(lZeile, colAtNummer).Value))
'durch
id = lstData.Value
 

josef24

Erfahrenes Mitglied
#27
Hier das Problem: "Laufzeitfehler 91 Objektvariable o. With- Blockvariable nicht fest gelegt". Ich hoffe es vereinfacht dir die Suche. Gruß Josef

Code:
Private Sub lstData_Click()
    Dim lZeile As Long
    Dim rngRow As Range
    Dim id As String
   
    id = Trim(CStr(rngRow.Cells(lZeile, colAtNummer).Value))
    clearForm
    If lstData.ListIndex >= 0 Then
        If seekArb(id, rngRow) Then
            txtNummer = id
            txtAnrede = rngRow.Cells(lZeile, colAtAnrede).Value
            txtNachname = rngRow.Cells(lZeile, colAtNachname).Value
            txtVorname = rngRow.Cells(lZeile, colAtVorname).Value
            txtStrasse = rngRow.Cells(lZeile, colAtStrasse).Value
            txtWohnort = rngRow.Cells(lZeile, colAtWohnort).Value
            txtTelefon = rngRow.Cells(lZeile, colAtTelefon).Value
            txtGeburtstag = Format(rngRow.Cells(lZeile, colAtGeburtstag), "dd.mm.yyyy")
              txtEintritt = Format(rngRow.Cells(lZeile, colAtEintritt), "dd.mm.yyyy")
            txtAustritt = Format(rngRow.Cells(lZeile, colAtAustritt), "dd.mm.yyyy")
             txtgenBis = Format(rngRow.Cells(lZeile, colAtgenBis), "dd.mm.yyyy")
            txtgruppe = rngRow.Cells(lZeile, colAtGruppe).Value
            txtkrankenkasse = rngRow.Cells(lZeile, colAtKrankenkasse).Value
             txtbemerkung = rngRow.Cells(lZeile, colAtBemerkung).Value
        Else
            MsgBox "Nummer " & id & " nicht gefunden", vbExclamation + vbOKOnly
        End If
    End If
End Sub
 
#28
OK, hab da was gefunden. Ich weiss nicht, ob der Fehler mir oder dir passeirt ist.
Visual Basic:
Private Sub lstData_Click()
    Dim lZeile As Long
    Dim rngRow As Range
    Dim id As String
  
    id = Trim(CStr(rngRow.Cells(lZeile, colAtNummer).Value))
    clearForm
    If lstData.ListIndex >= 0 Then
        If seekArb(id, rngRow) Then
rngRow word erst in bei seekArb() initialisiert. Somit kann vorgängig die ID nicht aus diesem Array ausgelesen werden. Auch ist lZeile an dieser Stelle noch 0.
Du willst dort auch die ID aus der Liste nehmen und nicht die aus irgend einer beliebigen Zeile
Visual Basic:
'ersetze
 id = Trim(CStr(rngRow.Cells(lZeile, colAtNummer).Value))
'durch
id = lstData.Value
 

josef24

Erfahrenes Mitglied
#29
Danke, hab das mal geändert, aber es will einfach nicht gelingen einen neuen Datensatz einzubringen. Vielleicht kannst du es ja mal versuchen, denn hier kann ich nichts mehr erklären, weil kein "Fehler" angezeigt wird. ?? Gruß Josef
 
#31
1) Im Event lstData_Click() lZeile löschen. und zwar überall. Das behebt den Versatz beim Auslesen aus der Listbox
Visual Basic:
'Vorher
rngRow.Cells(lZeile, colAtAnrede).Value
'Nachher
rngRow.Cells(, colAtAnrede).Value
2) cmdNewClick() umbennen auf cmdNew_Click()

3) Lerne. Nicht einfach abschreiben ohne zu wissen was der Code macht. Du hast diverse Vorlagen. Versuche sie zu verstehen.
Ich will dir nicht einfach so dein Programm schreiben.

4) "will nicht gelingen", "geht nicht" gibt's nicht! Es gibt ein "Ich habe auf der Zeile XY folgende Fehlermeldung/Fehlverhalten"
 

josef24

Erfahrenes Mitglied
#32
Ich bin total begeistert, habe die Berichtigung eingearbeitet, und es ist einfach perfekt jetzt. Für deine Erklärungen und besonders deine Geduld mit mir muss ich mich nochmal ausdrücklich bedanken. Ich musste hierbei leider feststellen, das eine kurze Einweisung vor geraumer Zeit und ein Buch aus dem Rheinwerk Verlag hier bei weitem nicht ausreichen. Nochmals herzlichen Dank und einen schönen Tag Gruß Josef
 

josef24

Erfahrenes Mitglied
#33
Muss leider nochmal auf mein Problem zurück kommen. Habe jetzt 1 zu 1 den Code auf das Original übertragen, und plötzlich taucht der folgende Fehler auf. Dürfte ich nochmal um Unterstützung und Information bitten? Die Tabellen sind eigentlich gleich. Danke und Gruß Josef

Fehler wird bei: "lstData" blau unterlegt angezeigt
Hinweis: Fehler beim kompilieren, Variable nicht definiert


Code:
 Private Sub UserForm_Initialize()

  Dim lZeile As Long
 
    clearForm
   
    With Tabelle4
        lstData.List = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 7)).Value  ' es stand 7  da
    End With

End Sub
 

josef24

Erfahrenes Mitglied
#35
Hallo zusammen, ich muss mit folgendem nochmal um Unterstützung bitten. Habe folgenden Code wo ich neue Daten eingeben kann. Was mir aber jetzt auffiel, ist folgendes.
Verändere ich aber Die "NeuNr...." kommt der Fehler: " Nummer z. B. 112233 nicht gefunden". Muss jetzt etwas an meinem Code verändert werden?
Bitte um Unterstützung. Danke und Gruß Josef

Code:
Private Sub cmdNew_Click()
   Dim lZeile As Long
     lZeile = 2
     Do While Trim(CStr(wsAt.Cells(lZeile, 3).Value)) <> ""
         lZeile = lZeile + 1
     Loop
     wsAt.Cells(lZeile, 1) = CStr("NeuNR " & lZeile)
     lstData.AddItem CStr("NeuNR " & lZeile)
     lstData.ListIndex = lstData.ListCount - 1
  
End Sub
 
#38
Wo soll man was drücken um den Fehler zu bekommen?
Bitte, ich habe echt keinen Bock auf ein Katz und Maus Spiel.

Wenn du Hilfe haben willst, dann schreib genau was wann wie und wo.
Ja, ich hatte das File glaub schon mal offen. Aber ich habe es genauso schnell vergessen, weil es nicht mein Projekt ist.
 

josef24

Erfahrenes Mitglied
#39
Danke für dein Interesse erst mal. Folgendes Problem tut sich auf. Ich klicke auf "In ArbDat Daten eingeben...". Dann öffnet sich ein Tabellenausschnitt. Hier versuche ich dann die fiktive Nr. (in Spalte A) in eine echte Nr. zu ändern. Dabei kommt der Hinweis: "Nummer z. B. 112233 nicht gefunden". Ich kann also auf diesem Weg die Nummer nicht verändern, was natürlich nicht gewollt ist. Gruß Josef
 
#40
Jepp. Ist klar warum. Zum Speichern suchst du die passende Zeile anhand der Nummer. Nur, die neue Nummer existiert nicht.
Also muss man die alte Nummer irgendwo speichern um dann anhand dieser den Update zu machen.

Folgendes anpassen:
zuoberst in den Code hinter deinem Form musst du mal die Variable deklarieren, damit sie funktionsübergreifend verfügbar ist
Visual Basic:
Private actNumber As String
Dann beim auslsen die Nummer abfüllen
Visual Basic:
Private Sub lstData_Click()
...
        If seekArb(id, rngRow) Then
            '  txtNummer = id
            actNumber = rngRow.Cells(, colatnummer).Value
            txtNummer = actNumber
...
Und natürlich beim Erstellen eines neuen Datensatzes
Visual Basic:
' * Neuer Eintag öffnen
Private Sub cmdNew_Click()
   Dim lZeile As Long
  
     lZeile = 1
     Do While Trim(CStr(wsAt.Cells(lZeile, 3).Value)) <> ""
         lZeile = lZeile + 1
     Loop
     actNumber = CStr("NeuNR " & lZeile)
     wsAt.Cells(lZeile, 1) = actNumber
     lstData.AddItem actNumber
     lstData.ListIndex = lstData.ListCount - 1
  
End Sub
Und beim speichern jetzt einfach nach dieser Variable suchen
Visual Basic:
Private Sub cmdSave_Click()  '  Daten übertragen , Datei – Speichern [aktive Arbeitsmappe]
...
    'Zeile suchen und auslesen
    If seekArb(actNumber, rngRow) Then
        'Werte übernehmen (inkl. neuer Nummer)
        rngRow.Cells(, colatnummer).Value = Trim(CStr(txtNummer.Text))
...