Makrofehler beim Öffnen einer weiteren Datei

Moin zusammen,

ich benötige mal wieder eure Hilfe.

der folgende Code blendet mir über eine Gültigkeitsabfrage (ja/nein)
zwei Rechtecke mit Text ein oder aus:

Private Sub Worksheet_Calculate()

If Range(„O55“).Value = 400 Then
ActiveSheet.Shapes(„Rectangle 367“).Visible = True
ActiveSheet.Shapes(„Rectangle 372“).Visible = True

Else

If Range(„O55“).Value 400 Then
ActiveSheet.Shapes(„Rectangle 367“).Visible = False
ActiveSheet.Shapes(„Rectangle 372“).Visible = False

End If
End If

End Sub

Das funktioniert bestens.

Sobald ich eine weitere Ecxel-Datei öffne, egal welche, bekomme ich die Fehlermeldung:

Das Element mit dem angegebenen Namen wurde nicht gefunden.

Wenn ich dann auf Debuggen klicke, ist die Zeile

ActiveSheet.Shapes(„Rectangle 367“).Visible = False

markiert.

Schließe ich den VBA-Editor, erhalte ich noch die Meldung:

Anwendungs- oder objektdefinierter Fehler.

Hat jemand eine Idee?

Excel 2003
Makro in Tabelle 1

Gruß und danke
Rolf

Ich vermute mal, dass durch das öffnen nicht mehr das Tabellenblatt mit den auszublendeten bzw. einzublendenden Felder Aktiv ist. Und mit dem Code „ActiveSheet.Shapes(„Rectangle 367“).Visible = True“ wird sich genau darauf bezogen…

Dies kann man umgehen indem man z.Bsp. per Variable das enstsprechende sheet benennt:

dim tabellenblatt as string

tabellenblatt = "Pfad/dateiname.xls/tabelle1

und danach im Aufruf anstatt:

„ActiveSheet.Shapes(„Rectangle 367“).Visible = True“

„tabellenblatt.Shapes(„Rectangle 367“).Visible = True“

verwenden…

www.termin-klick.de
Termine bucht man online

der folgende Code blendet mir über eine Gültigkeitsabfrage
(ja/nein) zwei Rechtecke mit Text ein oder aus:

Hallo Rolf,

Private Sub Worksheet\_Calculate()
With ThisWorkbook.Worksheets("Tabelle1")
 .Shapes("Rectangle 367").Visible = .Range("O55").Value = 400
 .Shapes("Rectangle 372").Visible = .Range("O55").Value = 400
End With
End Sub

Gruß
Reinhard

Danke
Hallo Reinhard,

der folgende Code blendet mir über eine Gültigkeitsabfrage
(ja/nein) zwei Rechtecke mit Text ein oder aus:

Private Sub Worksheet_Calculate()
With ThisWorkbook.Worksheets(„Tabelle1“)
.Shapes(„Rectangle 367“).Visible = .Range(„O55“).Value = 400
.Shapes(„Rectangle 372“).Visible = .Range(„O55“).Value = 400
End With
End Sub

Das klappt prima.
Danke Dir.

Gruß
Rolf

Danke
Hallo Terminklick,

das klappt auch.

Vielen Dank für die schnelle Hilfe.

Gruß
Rolf