Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
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

Laufzeitfehler wenn gesuchter Wert nicht vorhanden

Laufzeitfehler wenn gesuchter Wert nicht vorhanden
24.03.2017 14:06:42
Peter
so nun brauche ich heute nochmals eure Hilfe. Vorhin habt ihr es ja gelöst einen Wert in einer Zeile zu finden. Nun hab ich noch folgendes Problem:
Wenn der Wert den ich in "B9" im Sheet "Aufträge Umsätze eingeben" eingebe im Sheet "Bestand" gar nicht vorhanden ist bekomme ich einen Laufzeitfehler. Super wäre es wenn ein kleines Fenster aufgehen würde mit "Wert nicht vorhanden" oder so ähnlich. Habt ihr auch dafür eine Lösung ? mein Code sieht so aus. Der Fehler erscheint in der Fett gedruckten Zeile
Gruss Peter
Option Explicit
Dim Zeile As String
Dim Stammdatensheet As String
Dim Bearbeitungssheet As String
'Die Variablen werden einfach hier oben deklariert, damit sie übergreifend verwendbar werden.
Sub Zeileholen_für_Änderung_AB()
Dim SuchBegriff As String
Dim DropDown As String
Dim Namenspalte As String
Zeile = 0
Stammdatensheet = "Bestand"
Bearbeitungssheet = "Aufträge Umsätze eingeben"
DropDown = "B9"
Namenspalte = "D:D"
SuchBegriff = ThisWorkbook.Sheets(Bearbeitungssheet).Range(DropDown).Value
'Holt den ausgewählten Wert aus dem Dropdownfeld
If IsNumeric(SuchBegriff) Then
Zeile = WorksheetFunction.Match(--SuchBegriff, Sheets(Stammdatensheet).Range(Namenspalte) _
_
, 0) 
'Ermittelt die Zeile, wo der Name steht
Else
Zeile = WorksheetFunction.Match(SuchBegriff, Sheets(Stammdatensheet).Range(Namenspalte), 0)  _
_
'Ermittelt die Zeile, wo der Name steht
End If
Call Bestand_für_Änderung_holen
Call Zeilemarkieren_Auftrag_ändern
End 

Sub 

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
24.03.2017 14:09:38
Peter
Ups nun hats die Zeile gar nicht Fett dargestellt. Es ist diese Zeile
If IsNumeric(SuchBegriff) Then
Zeile = WorksheetFunction.Match(--SuchBegriff, Sheets(Stammdatensheet).Range(Namenspalte), 0)
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
24.03.2017 14:55:05
Peter
Hallo Chris
ja schon im Code für "Zeile markieren". Der Fehler tritt aber nun im Code für "Zeile holen" auf. Und ich ich weiß nicht wie ich die MsgBox in diesen Code integrieren kann.
Anzeige
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
24.03.2017 16:50:05
ChrisL
Hi Peter
Nimm eine der 3 Varianten und lasse das Activate/Select weg. Und unten hängst du dann deine beiden Calls an. Wenn du willst kannst du bei nicht vorhandenem Schlüssel noch ein "Exit Sub" einbauen, um das Makro vorzeitig abzubrechen.
Ohne den Inhalt von deinem "Zeile holen" Makro zu kennen, vermute ich dass du dort die gefundene Zeile brauchst. Lokale Variablen verlieren den Wert, sobald du ein neues Makro aufrufst. Damit du die Variable nicht extra übergeben musst, würde es sich anbieten den "holen-Code" in das gleiche Makro zu integrieren.
cu
Chris
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
24.03.2017 17:47:17
Peter
Hallo Chris
Ja genau ich brauche die Werte aus der gefundenen Zeile. Das komplette Makro siehe unten:
Wenn der Wert in "B9" nicht gefunden wird, gibt`s den Fehler bei "If Is Numeric ...."
Option Explicit
Dim Zeile As String
Dim Stammdatensheet As String
Dim Bearbeitungssheet As String
'Die Variablen werden einfach hier oben deklariert, damit sie übergreifend verwendbar werden.
Sub Zeileholen_für_Änderung_AB()
Dim SuchBegriff As String
Dim DropDown As String
Dim Namenspalte As String
Zeile = 0
Stammdatensheet = "Bestand"
Bearbeitungssheet = "Aufträge Umsätze eingeben"
DropDown = "B9"
Namenspalte = "D:D"
SuchBegriff = ThisWorkbook.Sheets(Bearbeitungssheet).Range(DropDown).Value  'Holt den ausgewä _
hlten Wert aus dem Dropdownfeld
If IsNumeric(SuchBegriff) Then
Zeile = WorksheetFunction.Match(--SuchBegriff, Sheets(Stammdatensheet).Range(Namenspalte),  _
0) 'Ermittelt die Zeile, wo der Name steht
Else
Zeile = WorksheetFunction.Match(SuchBegriff, Sheets(Stammdatensheet).Range(Namenspalte), 0)  _
'Ermittelt die Zeile, wo der Name steht
End If
Call Bestand_für_Änderung_holen
Call Zeilemarkieren_Auftrag_ändern
End Sub

Sub Bestand_für_Änderung_holen()
'Diese Prozedur kopiert die Inhalte der angegebenen Zellen auf das Bearbeitungssheet
With ThisWorkbook
Application.ScreenUpdating = False
.Sheets(Bearbeitungssheet).Range("b6").Value = .Sheets(Stammdatensheet).Range("b" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("d6").Value = .Sheets(Stammdatensheet).Range("c" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("f6").Value = .Sheets(Stammdatensheet).Range("d" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("h6").Value = .Sheets(Stammdatensheet).Range("e" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("j6").Value = .Sheets(Stammdatensheet).Range("h" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("l6").Value = .Sheets(Stammdatensheet).Range("s" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("d9").Value = .Sheets(Stammdatensheet).Range("o" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("f9").Value = .Sheets(Stammdatensheet).Range("p" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("h9").Value = .Sheets(Stammdatensheet).Range("q" & Zeile). _
Value
.Sheets(Bearbeitungssheet).Range("j9").Value = .Sheets(Stammdatensheet).Range("r" & Zeile). _
Value
End With
Range("A100").Select
ActiveWindow.SmallScroll Down:=-87
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
27.03.2017 08:50:42
ChrisL
Hi Peter
Sub Zeilemarkieren_Auftrag_ändern()
Dim wksBestand As Worksheet, wksUmsatz As Worksheet
Dim rngDropdown As Range, rngSuchspalte As Range, rngTreffer As Range
Set wksBestand = ThisWorkbook.Worksheets("Bestand")
Set wksUmsatz = ThisWorkbook.Worksheets("Aufträge Umsätze eingeben")
Set rngDropdown = wksUmsatz.Range("B9")
Const strNamenspalte As String = "D"
Application.ScreenUpdating = False
With wksBestand
Set rngSuchspalte = .Range(.Range(strNamenspalte & "12"), _
.Cells(Rows.Count, strNamenspalte).End(xlUp))
Set rngTreffer = rngSuchspalte.Find(rngDropdown, LookIn:=xlValues)
If rngTreffer Is Nothing Then
MsgBox rngDropdown & " nicht gefunden"
Else
wksUmsatz.Range("b6").Value = .Range("b" & rngTreffer.Row).Value
wksUmsatz.Range("d6").Value = .Range("c" & rngTreffer.Row).Value
wksUmsatz.Range("f6").Value = .Range("d" & rngTreffer.Row).Value
wksUmsatz.Range("h6").Value = .Range("e" & rngTreffer.Row).Value
wksUmsatz.Range("j6").Value = .Range("h" & rngTreffer.Row).Value
wksUmsatz.Range("l6").Value = .Range("s" & rngTreffer.Row).Value
wksUmsatz.Range("d9").Value = .Range("o" & rngTreffer.Row).Value
wksUmsatz.Range("f9").Value = .Range("p" & rngTreffer.Row).Value
wksUmsatz.Range("h9").Value = .Range("q" & rngTreffer.Row).Value
wksUmsatz.Range("j9").Value = .Range("r" & rngTreffer.Row).Value
End If
End With
End Sub

cu
Chris
Anzeige
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
28.03.2017 15:27:13
Peter
Hallo Chris
Der Code funktioniert im Prinzip Super, leider ist mir aber noch ein Fehler aufgefallen.
Ich such z.B. die Auftragsnummer 123456, wenn ich in "B9" nun nur 23456 eingebe, also ein Tippfehler findet der Code die ersten Nummer die 23456 beinhaltet obwohl sie 552345698 heißt. Der Code sucht also offensichtlich nach den Zahlen in der Reihenfolge wie sie in "B9" eingetragen sind. Was davor und dahinter steht ist egal. Das kann ich so leider nicht gebrauchen, weil ich tausende 6-10 stellige Auftragsnummern habe. In "B9" wird die Auftragsnummer eingegeben und exakt diese muss gefunden werden. Zahlendreher, zu viele und zu wenige Ziffern müssen die MsgBox aufrufen.
Hast du eine Idee wie man das lösen kann ?
Gruss Peter
Anzeige
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
28.03.2017 18:14:54
ChrisL
Hi Peter
Probiere mal...
Set rngTreffer = rngSuchspalte.Find(rngDropdown, LookIn:=xlValues, XlLookAt:=xlWhole)
Ansonsten nimm einfach eines der anderen Beispiele (mit Match/Vergleich). Du musst nur den Select-Teil durch den Wertübertrag ersetzen.
cu
Chris
AW: Laufzeitfehler wenn gesuchter Wert nicht vorhanden
29.03.2017 07:38:24
Peter
Hallo Chris
Danke für deinen Tipp, ich habs jetzt, musste allerdings wie du siehst "LookAt ..." vor "LookIn..." stellen. So funktioniert es wunderbar.
Set rngTreffer = rngSuchspalte.Find(rngDropdown, LookAt:= _
xlWhole, LookIn:=xlValues)
Gruss Peter

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige