Hallo Herbert,
ohne konkrete Fehlerbenennung, ohne Möglichkeit der Testung Deines Codes anhand einer Beipieldatei und mit Raten, was da wohl gemacht wird ist es schwierig.
Du solltest Option explicit einsetzen, dann wäre aufgefallen, dass einige Variablen nicht gedimt waren, auch die Benennung dieser trägt nicht gerade zum Verständnis bei.
Aber nun gut, mir fiel folgendes auf:
If c Like str Then Set Bereich = c
Dieses sollte in die IF-Schleife nach Prüfung ob c gsetzt ist. Sonst gibt es schon mal einen Fehler, wenn nichts gefunden wurde.
Code:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
|
Option Explicit
Sub Fehlende_Parameter_abrufen()
Dim Parameterzählen As String
Dim c As range, ProbenNmr As range, Parameter As range
Dim firstAddress
Dim str
Dim Bereich As range
Dim start As Double
For Each ProbenNmr In Sheets("Tabelle2").range("A3:A30000")
If ProbenNmr.Value = "" Then Exit Sub
If InStr(ProbenNmr.Value, "Proben") = 0 And _
ProbenNmr.Offset(0, 3).Value < 4 And ProbenNmr.Offset(0, 4).Value <> "f" Then
str = ProbenNmr.Value
With Worksheets("Tabelle1").Cells
Set c = .Find(str, LookIn:=xlValues)
If Not c Is Nothing Then
If c Like str Then Set Bereich = c
firstAddress = c.Address
Do
Set c = .FindNext(c)
If c Like str Then Set Bereich = Union(c, Bereich)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
For Each Parameter In Bereich
If Parameter.Offset(0, 2) = "" Then Parameterzählen = Parameterzählen & Parameter.Offset( _
0, 1).Value & " ; "
Next Parameter
ProbenNmr.Offset(0, 4).Value = Parameterzählen
End If
Parameterzählen = ""
Next ProbenNmr
End Sub
|
_________
viele Grüße
Karl-Heinz
|