🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
CALC ist die Tabellenkalkulation, die Sie immer wollten.
-
conny64
- Beiträge: 14
- Registriert: Fr 21. Mär 2014, 14:16
Beitrag
von conny64 » So 24. Dez 2023, 16:51
Hi,
ich möchte in einer bestimmten Spalte, dass alle eingegeben Buchstaben autom. in groß sind.
Habe mich mit dem Macro Editor beschäftigt, bekomme es aber nicht zum laufen.
Vielleich kann mir als Anfängerin da jemand helfend unter die Arme greifen:
Code: Alles auswählen
Sub Grosbuchstaben(ByVal oCell As Object)
Dim sRange As String
Dim oSheet As Object
Dim oChangedRange As Object
sRange = "A:A" ' Hier die Spalte angeben, in der Änderungen überwacht werden sollen
oSheet = oCell.getSpreadsheet()
oChangedRange = oSheet.getCellRangeByName(sRange)
If Not Intersect(oCell, oChangedRange) Is Nothing Then
If oCell.supportsService("com.sun.star.text.Cell") Then
oCell.setString(UCase(oCell.getString()))
End If
End If
End Sub
Sub OnChange(ByVal oEvent As Object)
Dim oCell As Object
oCell = oEvent.Range
Call Grosbuchstaben(oCell)
End Sub
Zuletzt geändert von
conny64 am Di 26. Dez 2023, 19:28, insgesamt 1-mal geändert.
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » So 24. Dez 2023, 18:15
Hallo,
Code: Alles auswählen
Sub Grosbuchstaben(oevent)
Dim oChangedRange As Object
oCell=oEvent
If oCell.supportsService("com.sun.star.sheet.SheetCell") Then
oChangedRange = oCell.SpreadSheet.Columns(0)
If oChangedRange.queryintersection(ocell.rangeaddress).count>0 Then
oCell.setString(UCase(oCell.getString()))
End If
End If
End Sub
Das eine Makro (gebunden an das Tabellenereignis "Inhalt geändert") reicht.
Frohes Fest
Gruß,
mikele
-
conny64
- Beiträge: 14
- Registriert: Fr 21. Mär 2014, 14:16
Beitrag
von conny64 » Mo 25. Dez 2023, 10:53
Hi Mikele,
vielen lieben Dank für deine schnelle Hilfe - ich wünsche dir erst mal frohe Festtage.
Leider hat das nicht ganz so bei mir geklappt.
1. Das Tabellenereignis "Inhalt geändert" gibt es so nicht - ich habe es an "Der Status 'Geändert' wurde gerändert gebunden
2. Beim Ausführen bekomme ich folgenden Fehler:
3. Würde ich es gerne noch auf einen bestimmten Zellenbereich begrenzen
kann ich das so mache wie in meinem Beispiel?
Viele Grüße
Conny
-
conny64
- Beiträge: 14
- Registriert: Fr 21. Mär 2014, 14:16
Beitrag
von conny64 » Mo 25. Dez 2023, 16:24
Hallo
ich denke ich konnte das ganze selbst lösen.
Hier mein Vorschlag:
Code: Alles auswählen
REM ***** BASIC *****
Sub range_check()
REM Prüfen ob aktuelle Zelle in einem bestimmten Bereich liegt
REM Wenn das der Fall ist wird der Inhalt der Zelle in Großschrift umgewandelt
REM Einbindung über: Sheetname mit der rechten Maustaste -> Ereignisse
REM "Inhalt geändert" auswählen und Macro "range_check" zuweisen
Dim oSheet As Object
Dim oCell As Object
Dim oRange As Object
oSheet = ThisComponent.CurrentController.ActiveSheet
oCell = ThisComponent.CurrentSelection
' Definiere den Zellbereich
Set oRange = oSheet.getCellRangeByName("A1:B10") ' Beispiel: Zellen A1 bis B10
' Überprüfe, ob die aktuelle Zelle innerhalb des Zellbereichs liegt
If oCell.RangeAddress.StartColumn >= oRange.RangeAddress.StartColumn And _
oCell.RangeAddress.EndColumn <= oRange.RangeAddress.EndColumn And _
oCell.RangeAddress.StartRow >= oRange.RangeAddress.StartRow And _
oCell.RangeAddress.EndRow <= oRange.RangeAddress.EndRow Then
'MsgBox "Die Zelle liegt im definierten Bereich."
Grossbuchstaben()
Else
'MsgBox "Die Zelle liegt nicht im definierten Bereich."
End If
End Sub
sub Grossbuchstaben()
rem Wandelt den Inhalt der aktuellen Zelle in Großbuchstaben
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ChangeCaseToUpper", "", 0, Array())
end sub
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » Mo 25. Dez 2023, 17:59
Hallo,
Das Tabellenereignis "Inhalt geändert" gibt es so nicht
doch ... du hast nur an der flaschen Stelle gesucht. Du bist bei den Anwendungs- bzw. Dokumentereignissen gelandet (deswegen auch die Fehlermeldung). Die Tabellenereignisse erreichst du, indem du mit rechter Maustaste auf den Tabellenreiter klickst oder im Menü Tabelle auf Ereignisse gehst.
Den Test auf den richtigen Bereich kannst du so machen. Alternativ kannst du auch:
Code: Alles auswählen
oSheet.getCellRangeByName("A1:B10").queryintersection(ocell.cellrangeaddress)
nutzen.
Gruß,
mikele
-
conny64
- Beiträge: 14
- Registriert: Fr 21. Mär 2014, 14:16
Beitrag
von conny64 » Mo 25. Dez 2023, 20:18
Hallo @Mikele,
vielen lieben Dank für deine tolle Unterstützung.
Ich habe es nach längerem suchen selbst gemerkt, dass ich da falsch war.
Es funktioniert jetzt alles - SUPER!
Viele Grüße
Conny
-
Helmut_S
- * LO-Experte *
- Beiträge: 756
- Registriert: Di 9. Feb 2016, 19:27
Beitrag
von Helmut_S » Di 26. Dez 2023, 17:26
Hallo, nur eine kleine Ergänzung. Sollte dein Makro irgendwann nicht mehr machen was es soll, bleibt dir immer noch die Einstellung im Menue Format --> Text --> GROSSBUCHSTABEN. oder der allerletzte Notnagel: die Großschreibung-Feststelltaste, die wohl auf den meisten Tastaturen vorhanden sein dürfte.
Falls deine Frage zu deiner Zufriedenheit beantwortet wurde, kennzeichne dies bitte im Betreff des ersten Eintrags, danke und Gruß, Helmut
MX-Linux KDE + Linux-Mint Cinnamon
-
conny64
- Beiträge: 14
- Registriert: Fr 21. Mär 2014, 14:16
Beitrag
von conny64 » Di 26. Dez 2023, 19:32
Hi @Helmut_S,
vielen Dank für die Info.
Die Möglichkeiten kannte ich, da ich aber das Script weiter gebe und ich in speziellen Spalten unbedingt
die Großschreibung brauche habe ich nach einer anderen Lösung gesucht.
Am liebsten wäre mir das gewesen, wenn es eine solche Möglichkeit beim Zellen-Formatieren gegeben hätte.
Dann hätte ich die Macro Geschichte nicht gebraucht.
Ich habe den Thread als gelöst gekennzeichnet.
Viele Grüße
Conny
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.