Über .Activate
Bei VBA-Makros der alten Schule denkt man oft, dass man ein Objekt "aktivieren" muss, damit es "aktuell" wird. Als ob man auf eine grafische Darstellung klickt und alles, was man mit Maus und Tastatur tut, vom aktivierten Objekt empfangen wird. Der "Makro-Generator" für das Microsoft Büro Produkte für diesen Kodierungsstil verantwortlich ist.
In der Welt der VBA-Programmierung oder der Verwendung der Office-APIs von C# oder anderen gängigen Sprachen sollte dies jedoch nicht so gehandhabt werden.
Um ein Diagrammobjekt, eine Linie usw. zu ändern, können Sie das Objekt selbst über seine Objektverweis . Sobald Sie es erhalten haben, können Sie auf alle Methoden und Eigenschaften zugreifen, und die "Aktivierung" ist nicht Teil des Konzepts. Wenn Sie aus irgendeinem Grund wollen, dass das Objekt den Fokus erhält, damit der Benutzer es sehen kann, haben visuelle Objekte normalerweise eine "Activate()"-Funktion, die Sie aufrufen können.
In diesem Beispiel wird die Linienbreite mehrerer Serien in einem Diagramm auf 1 gesetzt:
Sub Change_all_charts()
Dim ch As chart
Dim ws As Worksheet
Dim ChtObj As ChartObject
Dim srs As Series
'Get a reference to the active worksheet
Set ws = ActiveSheet
'Loop each chart object in worksheet ws
For Each ChtObj In ws.ChartObjects
'Operate on 'ChtObj.chart' object using . notation
With ChtObj.chart
Debug.Print "Chart being modified: '" & .Name & "'"
'Loop through all series in the chart .Series collection
For Each srs In .SeriesCollection
Debug.Print " Series being modified: '" & srs.Name & "'"
'Set the series line width
srs.Format.Line.Weight = 1
Next
End With
Next
End Sub
Früher (oder auch heute noch) programmierten Finanzfachleute Excel und ließen ihre Arbeitsblätter wie verrückt blinken und animieren, weil sie dachten, dass ein Objekt den "Fokus" erhalten muss, um geändert zu werden.
Nun, jetzt ist es gesagt, denn es hat mich in den letzten 40 Jahren "geärgert".