Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler bei RNG4 kann ich nicht lösen

Forumthread: Fehler bei RNG4 kann ich nicht lösen

Fehler bei RNG4 kann ich nicht lösen
25.12.2022 15:50:02
Ralf
Frohe Weihnachten alle zusammen,
Ich habe die Feiertage genutzt um meine ganzen einzelne Programme in zu einen Programm zu vereinigen. Klappt auch soweit ganz gut jedoch bei einen Code in der Kundenmaske finde ich den Fehler nicht.
Zum Problem: In der Kundenmaske unter O10 gebe ich den letzten Kommentar ein, der soll in der Kundendatenbank AR beim der passenden Kd.-Nr. abgelegt werden.
Nach Eingabe vom neuen Datum unter Kundenmaske E26 + E27 soll es dann abgespeichert werden.
Der Code zeigt mit jedoch dabei immer einen Fehler an .
Kann vielleicht jemand von euch den Fehler berichtigen ? Wäre wirklich nett von euch.
https://www.herber.de/bbs/user/156937.xlsm
Gruß
Ralf
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei RNG4 kann ich nicht lösen
25.12.2022 16:56:14
Nepumuk
Hallo Ralf,
so:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TB As Worksheet, Kunu, Datum, Zeit, Zeile As Long
Dim SpK As Integer, SpD As Integer, SpR As Integer, SpG As Integer, SpL As Integer
Dim RNG1 As Range, RNG2 As Range, RNG3 As Range, RNG4 As Range, Zelle As Range
'On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
Set TB = Sheets("Kundendatenbank")
SpK = 4 'Spalte der Kundennummer =D
SpD = 14 'Spalte mit Datum =N
SpR = 8 'Spalte mit Restdaten =H
SpL = 44 'Spalte für Kommentare = 44
Set RNG1 = Range("B25:G25") 'Restdaten
Set RNG2 = Range("e26,e27") 'Datum Uhrzeit
Set RNG4 = Range("O10")
'nur bei Änderungen in diesen Zellen auslösen
If Not Intersect(Union(RNG1, RNG2, RNG4), Target) Is Nothing Then
Kunu = Range("B3")
If WorksheetFunction.CountIf(TB.Columns(SpK), Kunu) > 0 Then
'Kunde bereits vorhanden?
Zeile = WorksheetFunction.Match(Kunu, TB.Columns(SpK), 0)
Else
'Kunde nicht vorhanden?
MsgBox "Kundennummer nicht gefunden"
Exit Sub
End If
If Not Intersect(RNG1, Target) Is Nothing Then
'Restdaten eintragen
TB.Cells(Zeile, SpR).Offset(0, Target.Column - 2) = Target
End If
If Not Intersect(RNG2, Target) Is Nothing Then
Datum = Range("e26")
Zeit = Range("e27")
'Datum / Zeit; Beides muss eingetragen sein
If IsDate(Datum) And IsNumeric(Zeit) And Zeit  0 Then
'Zeit und Datum eintragen
TB.Cells(Zeile, SpD) = Datum
TB.Cells(Zeile, SpD + 1) = Format(Zeit, "hh:mm")
Application.EnableEvents = False
'KD Nr. Matchcode eintragen
Range("B3").FormulaR1C1 = "=R1C1" 'als Formel
Range("D3").FormulaR1C1 = "=R1C2"
'reset
RNG1 = "": RNG2 = "": RNG4 = ""
Application.EnableEvents = True
End If
End If
End If
'*** Fehlerbehandlung
Err.Clear
If Target.Address = "$J$20" Or _
Target.Address = "$J$20:$N$21" Then 'hier beginnt mein Code
Dim lloUnknown As Long
Dim lloLastRow As Long, liCol As Integer
Dim larKnown() As Variant, liIdx As Integer
Dim larFound() As Variant, liIdxFound As Integer
ReDim larFound(1, 0)
Application.EnableEvents = False
Sheets("Kundenmaske").Range("J22:L27").Value = "" 'die Liste mit zuvor gefundenen Telefonnummern wird gelöscht
If Sheets("Kundenmaske").Range("J20").Value = "" Then 'wenn Eintrag in J20 nur gelöscht wird, dann wird der Code abgebrochen
Application.EnableEvents = True
Exit Sub
End If
If Len(Sheets("Kundenmaske").Range("J20").Value) 
Gruß
Nepumuk
Anzeige
AW: Fehler bei RNG4 kann ich nicht lösen
25.12.2022 18:42:34
Ralf
Guten Abend Nepumuk,
herzlichen Dank für deine Hilfe,
Wo habe ich den Fehler gemacht ( welche Zeile im Code), kannst du es mir bitte mitteilen.
Noch schönen Abend wünsche ich dir
Gruß
Ralf
P.S.
Falsch wir uns nicht mehr hören wünsche ich noch einen guten Rutsch ins Neue Jahr
Anzeige
AW: Fehler bei RNG4 kann ich nicht lösen
25.12.2022 19:19:25
Ralf
Hallo Nemupuk,
leider ist jetzt wo anders ein Fehler aufgetaucht
Wenn du in der Kundenmaske Zelle J20 folgende Nummer eingibst 85921 dann muss in der Zelle J21 A&F erscheinen und in der Zelle L21 muss 1 erscheinen
da kommt aber eine Fehlermeldung.
In den Zellen J21 bis J27 werden alle Kunden im System angezeigt die mit Rufnummer z.B. 85921 anfangen
Gruß
Ralf
Sorry
Anzeige
AW: Fehler bei RNG4 kann ich nicht lösen
25.12.2022 19:45:49
Nepumuk
Hallo Ralf,
der Fehler lag in dieser Zeile:
If Not Intersect(Target, RNG4) Is Nothing Then
da hat das Not gefehlt
Den anderen Fehler habe ich beseitigt:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TB As Worksheet, Kunu, Datum, Zeit, Zeile As Long
Dim SpK As Integer, SpD As Integer, SpR As Integer, SpG As Integer, SpL As Integer
Dim RNG1 As Range, RNG2 As Range, RNG3 As Range, RNG4 As Range, Zelle As Range
'On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
Set TB = Sheets("Kundendatenbank")
SpK = 4 'Spalte der Kundennummer =D
SpD = 14 'Spalte mit Datum =N
SpR = 8 'Spalte mit Restdaten =H
SpL = 44 'Spalte für Kommentare = 44
Set RNG1 = Range("B25:G25") 'Restdaten
Set RNG2 = Range("e26,e27") 'Datum Uhrzeit
Set RNG4 = Range("O10")
'nur bei Änderungen in diesen Zellen auslösen
If Not Intersect(Union(RNG1, RNG2, RNG4), Target) Is Nothing Then
Kunu = Range("B3")
If WorksheetFunction.CountIf(TB.Columns(SpK), Kunu) > 0 Then
'Kunde bereits vorhanden?
Zeile = WorksheetFunction.Match(Kunu, TB.Columns(SpK), 0)
Else
'Kunde nicht vorhanden?
MsgBox "Kundennummer nicht gefunden"
Exit Sub
End If
If Not Intersect(RNG1, Target) Is Nothing Then
'Restdaten eintragen
TB.Cells(Zeile, SpR).Offset(0, Target.Column - 2) = Target
End If
If Not Intersect(RNG2, Target) Is Nothing Then
Datum = Range("e26")
Zeit = Range("e27")
'Datum / Zeit; Beides muss eingetragen sein
If IsDate(Datum) And IsNumeric(Zeit) And Zeit  0 Then
'Zeit und Datum eintragen
TB.Cells(Zeile, SpD) = Datum
TB.Cells(Zeile, SpD + 1) = Format(Zeit, "hh:mm")
Application.EnableEvents = False
'KD Nr. Matchcode eintragen
Range("B3").FormulaR1C1 = "=R1C1" 'als Formel
Range("D3").FormulaR1C1 = "=R1C2"
'reset
RNG1 = "": RNG2 = "": RNG4 = ""
Application.EnableEvents = True
End If
End If
End If
'*** Fehlerbehandlung
Err.Clear
If Target.Address = "$J$20" Or _
Target.Address = "$J$20:$N$21" Then 'hier beginnt mein Code
Dim lloUnknown As Long
Dim lloLastRow As Long, liCol As Integer
Dim larKnown() As Variant, liIdx As Integer
Dim larFound() As Variant, liIdxFound As Integer
ReDim larFound(1, 0)
Application.EnableEvents = False
Sheets("Kundenmaske").Range("J22:L27").Value = "" 'die Liste mit zuvor gefundenen Telefonnummern wird gelöscht
If Sheets("Kundenmaske").Range("J20").Value = "" Then 'wenn Eintrag in J20 nur gelöscht wird, dann wird der Code abgebrochen
Application.EnableEvents = True
Exit Sub
End If
If Len(Sheets("Kundenmaske").Range("J20").Value) 
Gruß
Nepumuk

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige