🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST} Eingabe autom. in Großbuchstaben

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Benutzeravatar
conny64
Beiträge: 14
Registriert: Fr 21. Mär 2014, 14:16

[GELÖST} Eingabe autom. in Großbuchstaben

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

Re: Eingabe autom. in Großbuchstaben

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

Benutzeravatar
conny64
Beiträge: 14
Registriert: Fr 21. Mär 2014, 14:16

Re: Eingabe autom. in Großbuchstaben

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

Bild

2. Beim Ausführen bekomme ich folgenden Fehler:
Bild

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

Benutzeravatar
conny64
Beiträge: 14
Registriert: Fr 21. Mär 2014, 14:16

Re: Eingabe autom. in Großbuchstaben

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

Re: Eingabe autom. in Großbuchstaben

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

Benutzeravatar
conny64
Beiträge: 14
Registriert: Fr 21. Mär 2014, 14:16

Re: Eingabe autom. in Großbuchstaben

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

Re: Eingabe autom. in Großbuchstaben

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

Benutzeravatar
conny64
Beiträge: 14
Registriert: Fr 21. Mär 2014, 14:16

Re: [GELÖST} Eingabe autom. in Großbuchstaben

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.



Antworten