Hallo Internet,
Ich habe foglendes Problem. Ich möchte durch alle meine Tabellen in meinem Workbook wandern und dabei die dritte Spalte auf einen "Sprung" hin untersuchen. Das Kriterium ist: wenn zwei aufeinander folgende Zellen sich um mehr als 0.1 unterscheiden ist das der Messbeginn (Start). Der Code sieht so aus:
Public Sub find_start()
Dim tbl As ListObject
Dim sht As Worksheet
Dim Start As Range
Dim sec As Long ' for the case of errors in the while loop no crash will occure
' calculate the beginning of the experiment using a treshhold
sec = 0
For Each sht In ThisWorkbook.Worksheets
For Each tbl In sht.ListObjects
Set Start = tbl.Range(3, 3) '<= DIESE ZEILE GIBT DEN FEHLER
Do While (Start - Start.offeset(-1, 0)) < 0.1
Start = Start.Offset(1, 0)
sec = sec + 1
If sec > 400000 Then
Exit Do
End If
Loop
Start.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
tbl.Range(1, 1).Select
ActiveSheet.Paste
Next tbl
Next sht
End Sub
Die Zeile in der der Range Start ein Wert zugeordnet werden soll also in diesem Fall die Zeile (3,3) der jeweiligen Tabelle wird der Fehler :
Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt.
mit
Set Start= tbl.Range(3,3)
funktionierts auch nicht. Dann weisst das Program mir nur den Wert der Range(3,3) der Variablen Start zu.
Wie kann ich also wirklich eine Range zuweisen und nicht nur den Wert der Range?
|