ich hatte schon auf meine Frage eine Antwort bekommen, die jedoch bewirkt, daß nach einem 2.Durchlauf alle Tabellen ausgeblendet werden, siehe:
https://www.herber.de/forum/messages/1005588.html
Nochmals mein Anliegen:
In Tabelle6 sind Tabellen und Diagramme, in Tabelle7 nur Tabellen. Ich suche beim aktivieren der Tabelle6 in Tabelle7 ein Datum (der1.des Monats) dies funktioniert bis auf einen Fall gut. Ist in Tabelle6 irgendein Diagramm selectiert worden, danach wird eine andere Tabelle aktiv, dann wieder zu Tabelle6, erscheint Fehler Laufzeitfehler13, Typen unverträglich. Wurde in Tabelle6 irgendeine Zelle statt eines Diagrammes selectiert kommt keine Fehlermeldung.
Ich habe jetzt die Codezeile von Karin eingebaut:
If Not TypeOf Selection Is Range Then ActiveWindow.Visible = False
Beim 1. Wechsel von Tabelle6 nach Tabelle7 und nach Tabelle6 zurück klappt es gut, auch bei selectiertem Diagramm, wenn ich dann aber wieder auf Tabelle7 und dann auf Tabelle6 gehe werden alle Tabellen ausgeblendet. Diese lassen sich mit ActiveWindow.Visible = True in Workbook_BeforeClose wieder einblenden. Wie funktioniert es, dass ich bei selectiertem Diagramm mehrmals zwischen den Tabellen wechseln kann, ohne das mir alle Tabellen ausgeblendet werden?
Hier noch ein Auszug aus meinem Makro:
Option Explicit
Private Sub Worksheet_Activate()
Dim mo As Integer, ma As Integer, m As Integer, f As Integer, ZeilenNr As Integer
Dim a As Date, b As Date
Dim Zeile As Range
Dim ZeilDat As Integer
'hebt Markierung der Diagramme auf:
If Not TypeOf Selection Is Range Then ActiveWindow.Visible = False
mo = Tabelle7.Range("A65536").End(xlUp).Row
ma = Tabelle6.Range("B65536").End(xlUp).Row
a = Tabelle7.Cells(mo, 1)
'es wird der 1. des jeweiligen Monats ermittelt,
a = DateSerial(Year(a), Month(a), 1)
b = Tabelle6.Cells(ma, 2)
m = Month(a)
'Wenn Monat a = b, gehe zu End If (vor Ende:)
If Month(b) = m Then
Else
'damit bei einem neuen Monat keine leeren Zellen in Tabelle Diagramm sind:
'es wird die Zeilennummer des 1.Tages des neuen Monats gefunden und dann die
'Anzahl der Werte am 1. des Monats ermittelt, ist diese = 0 dann gehe zu Ende,
ZeilDat = Tabelle7.Columns("A:A").Cells.Find(what:=a).Row
If Application.WorksheetFunction.CountA(Tabelle7.Range("B" & ZeilDat & ":E" & ZeilDat)) = 0 Then GoTo Ende
usw.
Gruß und vielen Dank
Wolfgang