Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Macro muss 2 mal ausgeführt werden

Macro muss 2 mal ausgeführt werden
05.02.2022 10:43:24
oraculix
Hallo Alle!
In Meiner Tabelle habe ich in Zeile A1 bis IG Bilder.
diese werden manchmal geändert und dann muss man sie mühsam per Hand einrichten-
Deshalb das untenstehende Macro es Bestimmt die Höhe und Breite der Bilder und Zentriert sie in den Spalten.
Aber ich muss es 2 mal ausführen wenn ich es nur einmal ausführe werden die Bilder nicht Zentriert
beim Zweiten mal schon.
Frage :
Wo liegt der Fehler und wie kann das Macro verkürzen damit es auch beim ersten mal funktioniert
'Alle Bilder Zentrieren und Größe einstellen

Private Sub Worksheet_Activate()
Dim objShape As Shape
For Each objShape In Tabelle5.Shapes
With objShape
If .Type = msoPicture Then
.LockAspectRatio = False
.Left = .TopLeftCell.Left + .TopLeftCell.Width / 2 - .Width / 2
.Top = .TopLeftCell.Top + .TopLeftCell.Height / 2 - .Height / 2
.Height = Application.CentimetersToPoints(4.2) 'Alle Grafiken Gleiche Höhe
.Width = Application.CentimetersToPoints(6.22) ' und Breite
End If
End With
Next
'Und Hier das Ganze nochmal
For Each objShape In Tabelle5.Shapes
With objShape
If .Type = msoPicture Then
.LockAspectRatio = False
.Left = .TopLeftCell.Left + .TopLeftCell.Width / 2 - .Width / 2
.Top = .TopLeftCell.Top + .TopLeftCell.Height / 2 - .Height / 2
.Height = Application.CentimetersToPoints(4.2) 'Alle Grafiken Gleiche Höhe
.Width = Application.CentimetersToPoints(6.22) ' und Breite
End If
End With
Next
Application.ScreenUpdating = True
End Sub
Gruß
Oraculix

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro muss 2 mal ausgeführt werden
05.02.2022 11:32:24
onur
Vertausche doch mal die ersten 2 mit den letzten beiden Zeilen:

.Height = Application.CentimetersToPoints(4.2) 'Alle Grafiken Gleiche Höhe
.Width = Application.CentimetersToPoints(6.22) ' und Breite
.Left = .TopLeftCell.Left + .TopLeftCell.Width / 2 - .Width / 2
.Top = .TopLeftCell.Top + .TopLeftCell.Height / 2 - .Height / 2

Danke erledigt
05.02.2022 11:39:34
oraculix
Vielen Dank!
Genau das war der Fehler! Unglaublich sowas ich verstehe nur nicht warum es umgekehrt Funktioniert und warum VBA es bei Variante 1 einfach Ignoriert.
Gruß
Oraculix
AW: Danke erledigt
05.02.2022 12:28:58
{Boris}
Hi,

ich verstehe nur nicht warum es umgekehrt Funktioniert und warum VBA es bei Variante 1 einfach Ignoriert.
Das ist doch nicht schwer zu verstehen: Bei Left und Top greifst Du auf Width bzw. Height zurück - um diese beiden dann anschließend noch zu ändern.
Somit ist es nur logisch, die statischen Zuweisungen bei Width und Height zuerst vorzunehmen, damit Left und Top die richtigen Werte erhalten.
VG, Boris
Anzeige
Ah jetzt geht ein Lichtlein auf
05.02.2022 12:39:57
oraculix
Danke!
Ah jetzt geht ein Lichtlein auf bei mir.
Vielen Dank echt gute Erklärung.
Gruß
Oraculix

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige