AW: hier die Auflösung des Bugs
10.04.2013 19:43:40
Tino
Hallo,
das stimmt mit Parent.
Aber wenn Du RangeGes.Parent.Range(cells(
)) schreibst und dieses RangeGes
von einer anderen Tabelle stammt die nicht aktiv ist knallt es wieder.
cells(
) definiert eine Zelle mit dem entsprechenden Zeilen und Spalten Index.
Wenn Du in einem Standard-Modul arbeitest,
reicht es im inneren vom Range die Zellen auf die richtige Tabelle zu verweisen.
liegt der Code aber in einer Tabelle,
hat Range und auch Cells den Bezug zu dieser Tabelle wo auch der Code steht.
Daher referenziere ich Grundsätzlich Range und Cells auf die richtige Tabelle.
Hier mal ein Beispiel-Code.
Stelle diesen mal in ein Modul und gehe mit F8 schrittweise den Code durch.
Dann stell diesen mal in die Tabelle1 oder 2 als Code und wiederhole dieses Spiel.
Dort wo es zum Bezugsfehler kommt geht die Msgbox auf.
Sub Beispiel()
Dim rng As Range
On Error Resume Next
Sheets("Tabelle1").Activate
With Sheets("Tabelle1")
Set rng = .Range(Cells(1, 1), Cells(1, 2))
End With
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Err.Clear
Sheets("Tabelle2").Activate
With Sheets("Tabelle1")
Set rng = .Range(Cells(1, 1), Cells(1, 2))
End With
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Err.Clear
Sheets("Tabelle2").Activate
With Sheets("Tabelle1")
Set rng = Range(.Cells(1, 1), .Cells(1, 2))
End With
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Err.Clear
Sheets("Tabelle2").Activate
With Sheets("Tabelle1")
Set rng = .Range(.Cells(1, 1), .Cells(1, 2))
End With
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Err.Clear
Sheets("Tabelle1").Activate
With Sheets("Tabelle1")
Set rng = .Range(.Cells(1, 1), .Cells(1, 2))
End With
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical: Err.Clear
End Sub
Gruß Tino