Registriert seit: 21.03.2021
Version(en): Professional 2010
Hallo, ist das bei Excel alles ganz normal? Ich habe ein Makro aufgezeichnet: - Zelle B5 ausgewählt
- Kommentar eingeblendet
- Rahmen des Kommentars ausgewählt
- Kommentar formatieren
- Größe --> Häkchen bei Seitenverhältnis sperren
- Ausrichtung --> Automatische Größe
- OK
Das aufgezeichnete Makro sieht so aus:
Resize_auto_aspectratio.xlsm (Größe: 14,69 KB / Downloads: 2)
Code: Option Explicit
Sub Resize_auto_aspectratio() ' ' Resize_auto_aspectratio Makro '
' Range("B5").Select ActiveCell.Comment.Visible = True Range("B5").Comment.Shape.Select True With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlTop .ReadingOrder = xlContext .Orientation = xlHorizontal .AutoSize = True End With Range("B5").Select End Sub
Kommentarabmessung vor der Aufzeichnung:
Nach der manuellen Aufzeichnung des Makros sieht die Kommentarabmessung so aus:
Zudem ist das Seitenverhältnis gesperrt:
Nach Abspielen des Makros sieht die Kommentarabmessung so aus:
Zudem ist das Seitenverhältnis nicht gesperrt:
Jay Freedman schrieb:Lock Picture Aspect Ratio
Unfortunately, you're correct. There are far too many cases of controls in built-in dialogs that have no support in VBA. In each release the MVPs have asked again to have this fixed, but so far without success.
(....)
-- Regards, Jay Freedman Microsoft Word MVP Email cannot be acknowledged; please post all follow-ups to the newsgroup so all may benefit.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
wenn Du Deinen Code liest, kannst Du da was vom Sperren des Seitenverhältnis finden? War das Häkchen schon vor der Aufzeichnung gesetzt? Mal abgesehen davon, dass Excel zuweilen nicht alles und zuweilen mehr als man denkt aufzeichnet wäre das ein Grund.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• TxbyFmjy
Registriert seit: 21.03.2021
Version(en): Professional 2010
(26.08.2021, 20:19)schauan schrieb: Hallöchen,
wenn Du Deinen Code liest, kannst Du da was vom Sperren des Seitenverhältnis finden? Nein. Das Sperren des Seitenverhältnisses wurde nicht aufgezeichnet. (26.08.2021, 20:19)schauan schrieb: Hallöchen,
War das Häkchen schon vor der Aufzeichnung gesetzt? Nein. Das geschriebene Makro führt auch nicht zum gleichen Ergebnis wie der manuelle Vorgang:
Resize_auto_aspectratio (2).xlsm (Größe: 16,08 KB / Downloads: 2)
Code: Option Explicit
Sub Resize_auto_aspectratio_2() '** ergibt nicht das gleiche Ergebnis wie der manuelle Vorgang Dim rngZelle As Range
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
If ActiveSheet.Comments.Count = 0 Then MsgBox "No comments in entire sheet" Exit Sub End If
For Each rngZelle In Selection.Cells With rngZelle If Not .Comment Is Nothing Then
'Resize With .Comment.Shape .LockAspectRatio = msoTrue .TextFrame.AutoSize = True End With End If End With Next
Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
End Sub
Nach Abspielen des geschriebenen Makros sieht die Kommentarabmessung so aus:
Zudem ist das Seitenverhältnis nicht gesperrt, obwohl das geschriebene Makro LockAspectRatio enthält:
(26.08.2021, 20:19)schauan schrieb: Hallöchen,
Mal abgesehen davon, dass Excel zuweilen nicht alles und zuweilen mehr als man denkt aufzeichnet wäre das ein Grund. Gut zu wissen, wie hakelig Excel-VBA funktioniert.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, und das gesperrte Seitenverhältnis funktioniert nur, wenn Du den Kommentar (oder auch ein anderes Shape) an den Eckpunkten größer ziehst ... oder wenn Du z.B. im VBA Breiter oder Höhe veränderst
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• TxbyFmjy
Registriert seit: 21.03.2021
Version(en): Professional 2010
(27.08.2021, 19:41)schauan schrieb: Hallöchen,
und das gesperrte Seitenverhältnis funktioniert nur, wenn Du den Kommentar (oder auch ein anderes Shape) an den Eckpunkten größer ziehst ... oder wenn Du z.B. im VBA Breiter oder Höhe veränderst Danke für den Hinweis. Das ist nicht das was bei einem gesperrten Seitenverhältnis zu erwarten sein sollte. Diagonal aufziehen bei gesperrten Seitenverhältnis ist ok. Aber wie lässt sich per VBA verhindern, dass das Kommentar manuell nach links/rechts oder oben/unten gezogen werden kann?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
VBA:
Zum Verhindern oder zumindest Erschweren könnte man ggf. den Menüpunkt Kommentar bearbeiten aus dem Kontextmenü entfernen. Dann geht aber auch Ändern nicht mehr. Alternativ könnte man mit etwas Aufwand beim Wechsel in eine Zelle die Kommentargröße ermitteln und beim Wechsel in eine andere Zelle die Kommentargröße der vorherigen Zelle wiederherstellen. Oder Du hast eine Standardgröße und stellst diese vor dem Speichern der Datei wieder her. Oder ...
ohne VBA: Oder Du arbeitest mit Blattschutz
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• TxbyFmjy
Registriert seit: 21.03.2021
Version(en): Professional 2010
28.08.2021, 18:13
(Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2021, 18:21 von TxbyFmjy.
Bearbeitungsgrund: Dateiname von attachment geändert
)
(28.08.2021, 09:44)schauan schrieb: Hallöchen,
VBA:
Zum Verhindern oder zumindest Erschweren könnte man ggf. den Menüpunkt Kommentar bearbeiten aus dem Kontextmenü entfernen. Dann geht aber auch Ändern nicht mehr. Zitat:Excel 2016, Power Programming with VBA (Ich habe nur die englische Ausgabe.)
18 Working with Shortcut Menus
Listing shortcut menus Excel 2016 has 67 shortcut menus. (Excel 2016 hat 67 Kontextmenüs)
Code: Sub ShowShortcutMenuNames() Dim Row As Long Dim Cbar As CommandBar Row = 1 For Each Cbar In CommandBars If Cbar.Type = msoBarTypePopup Then Cells(Row, 1) = Cbar.Index Cells(Row, 2) = Cbar.Name Cells(Row, 3) = Cbar.Controls.Count Row = Row + 1 End If Next Cbar End Sub
Displaying all shortcut menu items
The ShowShortcutMenuItems procedure that follows creates a table that lists all the first-level controls on every shortcut menu. For each control, the table includes the shortcut menu’s Index and Name, plus the ID, Caption , Type, Enabled, and Visible property values.
Das Makro ShowShortcutMenuItems erzeugt eine Tabelle, die alle Controls der ersten Ebene jedes Kontextmenüs auflistet.
Code: Sub ShowShortcutMenuItems() Dim Row As Long Dim Cbar As CommandBar Dim ctl As CommandBarControl Range("A1:G1") = Array("Index", "Name", "ID", "Caption", _ "Type", "Enabled", "Visible") Row = 2 Application.ScreenUpdating = False For Each Cbar In Application.CommandBars If Cbar.Type = 2 Then For Each ctl In Cbar.Controls Cells(Row, 1) = Cbar.Index Cells(Row, 2) = Cbar.Name Cells(Row, 3) = ctl.Id Cells(Row, 4) = ctl.Caption If ctl.Type = 1 Then Cells(Row, 5) = "Button" Else Cells(Row, 5) = "Submenu" End If Cells(Row, 6) = ctl.Enabled Cells(Row, 7) = ctl.Visible Row = Row + 1 Next ctl End If Next Cbar ActiveSheet.ListObjects.Add(xlSrcRange, _ Range("A1").CurrentRegion, , xlYes).Name = "Table1" End Sub
"Kommentar bearbeiten" wird in der Liste "all shortcut menu items" nicht aufgeführt. "Kommentar bearbeiten" erscheint auch erst, wenn mit "Kommentar einfügen" ein Kommentar eingefügt wurde und gehört deshalb vielleicht nicht zu den first-level controls. Wie komme ich an die Daten des controls "Kommentar bearbeiten"?
67 shortcut menus-MSE2016.xlsx (Größe: 10,55 KB / Downloads: 0)
all shortcut menu items-first level-MSE2016.xlsx (Größe: 49,47 KB / Downloads: 0)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• TxbyFmjy
Registriert seit: 21.03.2021
Version(en): Professional 2010
(28.08.2021, 09:44)schauan schrieb: Hallöchen,
VBA:
Zum Verhindern oder zumindest Erschweren könnte man ggf. den Menüpunkt Kommentar bearbeiten aus dem Kontextmenü entfernen. Dann geht aber auch Ändern nicht mehr. 'Menüpunkt "Kommentar bearbeiten" aus dem Kontextmenü entfernen' ist keine Lösung. Zitat:Mit Customizing Context Menus in All Versions of Microsoft Excel, 04/27/2015 ergänzt um & " " & Cbar.Index werden den Kontextmenüs Namen und Index hinzugefügt.
Code: Sub Add_Name_To_Contextmenus() Dim Cbar As CommandBar For Each Cbar In Application.CommandBars With Cbar If .Type = msoBarTypePopup Then On Error Resume Next With .Controls.Add(Type:=msoControlButton) .Caption = "Name for VBA = " & Cbar.Name & " " & Cbar.Index .Tag = "NameButtonInContextMenu" End With On Error GoTo 0 End If End With Next End Sub
Mit nachfolgendem Schnipsel lassen sich alle controls eines Kontextmenüs anzeigen:
Code: Sub Menu_Popups() Application.CommandBars(40).ShowPopup End Sub
Mit dem nachfolgendem Schnipsel wird "Kommentar einfügen" ausgegraut und damit inaktiv. "Kommentar bearbeiten" ist damit auch nicht mehr zugänglich.
Code: Sub Control_Disable() Application.CommandBars(36).FindControl(Id:=2031).Enabled = False End Sub
40 ist der Index des Kontextmenüs Cell, wenn in der Ansicht "Normal" in eine Zelle geklickt wurde, bei Excel 2016 deutsch. Nicht nur das Kontextmenü Cell gibt es mit unterschiedlichen Indizes mehrmals. Achtung: 43 ist der Index des Kontextmenüs Cell, wenn in der Ansicht "Umbruchvorschau" eine Zelle selektiert wurde, bei Excel 2016 deutsch. Die Indizes sind bei unterschiedlichen Microsoft Excel Versionen und unterschiedlichen Sprachen unterschiedlich. Das Kontextmenü Cell 40 enthält nur die control "Kommentar einfügen". "Kommentar bearbeiten" gibt es ausgegraut nicht. Warum? Wird mit "Kommentar einfügen" ein Kommentar eingefügt, dann wechselt "Kommentar einfügen" zu "Kommentar bearbeiten". "Kommentar einfügen" = "Kommentar bearbeiten", sobald ein Kommentar eingefügt wurde. Wird "Kommentar einfügen" Enabled = False, dann lassen sich Kommentare nicht nur nicht mehr ändern, sondern es lassen sich überhaupt keine Kommentare mehr einfügen. "Kommentar bearbeiten" lässt sich streng genommen nicht auf Enabled = False setzen. Deshalb ist 'Menüpunkt "Kommentar bearbeiten" aus dem Kontextmenü entfernen' keine Lösung. (28.08.2021, 09:44)schauan schrieb: Hallöchen,
VBA:
Alternativ könnte man mit etwas Aufwand beim Wechsel in eine Zelle die Kommentargröße ermitteln und beim Wechsel in eine andere Zelle die Kommentargröße der vorherigen Zelle wiederherstellen. Dieses Schnitzel gehört nicht in ein Modul, sondern unter Microsoft Exel Objekte in DieseArbeitsmappe. Zitat:Excel 2016, Power Programming with VBA (Ich habe nur die englische Ausgabe.)
6 Understanding Excel’s Events
Excel is programmed to monitor many different events. These events can be classified as:
➤ Workbook events: Events that occur for a particular workbook. Examples of such events include Open (the workbook is opened or created), BeforeSave (the workbook is about to be saved), and NewSheet (a new sheet is added).
➤ Worksheet events: Events that occur for a particular worksheet. Examples include Change (a cell on the sheet is changed), SelectionChange (the user moves the cell indicator), and Calculate (the worksheet is recalculated).
➤ etc.
Registriert seit: 21.03.2021
Version(en): Professional 2010
29.08.2021, 10:47
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2021, 10:56 von TxbyFmjy.
Bearbeitungsgrund: redaktionelle Änderungen
)
(28.08.2021, 09:44)schauan schrieb: Hallöchen,
VBA:
Zum Verhindern oder zumindest Erschweren könnte man ggf. den Menüpunkt Kommentar bearbeiten aus dem Kontextmenü entfernen. Dann geht aber auch Ändern nicht mehr. 'Menüpunkt "Kommentar bearbeiten" aus dem Kontextmenü entfernen' ist keine Lösung. Zitat:Mit Customizing Context Menus in All Versions of Microsoft Excel, 04/27/2015 ergänzt um & " " & Cbar.Index werden den Kontextmenüs Namen und Index hinzugefügt.
Code: Sub Add_Name_To_Contextmenus() Dim Cbar As CommandBar For Each Cbar In Application.CommandBars With Cbar If .Type = msoBarTypePopup Then On Error Resume Next With .Controls.Add(Type:=msoControlButton) .Caption = "Name for VBA = " & Cbar.Name & " " & Cbar.Index .Tag = "NameButtonInContextMenu" End With On Error GoTo 0 End If End With Next End Sub
Mit nachfolgendem Schnipsel lassen sich alle controls eines Kontextmenüs anzeigen:
Code: Sub Menu_Popups() Application.CommandBars(35).ShowPopup End Sub
Mit dem nachfolgendem Schnipsel wird "Kommentar einfügen" ausgegraut und damit inaktiv. "Kommentar bearbeiten" ist damit auch nicht mehr zugänglich.
Code: Sub Control_Disable() Application.CommandBars(35).FindControl(Id:=2031).Enabled = False End Sub
35 ist der Index des Kontextmenüs Cell, wenn in der Ansicht "Normal" in eine Zelle geklickt wurde, bei Excel 2016 deutsch. Nicht nur das Kontextmenü Cell gibt es mit unterschiedlichen Indizes mehrmals. Achtung: 38 ist der Index des Kontextmenüs Cell, wenn in der Ansicht "Umbruchvorschau" eine Zelle selektiert wurde, bei Excel 2016 deutsch. Die Indizes sind bei unterschiedlichen Microsoft Excel Versionen und unterschiedlichen Sprachen unterschiedlich. Das Kontextmenü Cell 35 enthält nur die control "Kommentar einfügen". "Kommentar bearbeiten" gibt es ausgegraut nicht. Warum? Wird mit "Kommentar einfügen" ein Kommentar eingefügt, dann wechselt "Kommentar einfügen" zu "Kommentar bearbeiten". "Kommentar einfügen" = "Kommentar bearbeiten", sobald ein Kommentar eingefügt wurde. Wird "Kommentar einfügen" Enabled = False, dann lassen sich Kommentare nicht nur nicht mehr ändern, sondern es lassen sich überhaupt keine Kommentare mehr einfügen. "Kommentar bearbeiten" lässt sich streng genommen nicht auf Enabled = False setzen. Deshalb ist 'Menüpunkt "Kommentar bearbeiten" aus dem Kontextmenü entfernen' keine Lösung. (28.08.2021, 09:44)schauan schrieb: Hallöchen,
VBA:
Alternativ könnte man mit etwas Aufwand beim Wechsel in eine Zelle die Kommentargröße ermitteln und beim Wechsel in eine andere Zelle die Kommentargröße der vorherigen Zelle wiederherstellen. Dieses Schnitzel gehört nicht in ein Modul, sondern unter Microsoft Exel Objekte in DieseArbeitsmappe. Zitat:Excel 2016, Power Programming with VBA (Ich habe nur die englische Ausgabe.)
6 Understanding Excel’s Events
Excel is programmed to monitor many different events. These events can be classified as:
➤ Workbook events: Events that occur for a particular workbook. Examples of such events include Open (the workbook is opened or created), BeforeSave (the workbook is about to be saved), and NewSheet (a new sheet is added).
➤ Worksheet events: Events that occur for a particular worksheet. Examples include Change (a cell on the sheet is changed), SelectionChange (the user moves the cell indicator), and Calculate (the worksheet is recalculated).
➤ etc.
|