🙏 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)Suchen und finden

Alles zur Programmierung im LibreOffice.
Antworten
Pums
Beiträge: 9
Registriert: Mi 16. Jul 2014, 09:00

(gelöst)Suchen und finden

Beitrag von Pums » Mi 16. Jul 2014, 09:24

Hallo zusammen,

mit Findnext kann ich ja einen Bereich duurchsuchen.
Wie bekomme ich es hin das er nicht soetwas findet:
Suchbegriff: "Hof"
Er findet
Hofnarr und Bierhof

Ich möchte aber das er nur nach den ersten 3 Buchstaben sucht.
Er soll bei eingabe von Hof halt nur Hofnarr finden, nicht Bierhof?

Wie geht das?

Danke.
Zuletzt geändert von Pums am Mi 16. Jul 2014, 17:06, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: Suchen und finden

Beitrag von karolus » Mi 16. Jul 2014, 12:20

Hallo

Suche nach ^Hof.*

mit der Option [x]regulärer Ausdruck

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Pums
Beiträge: 9
Registriert: Mi 16. Jul 2014, 09:00

(gelöst)Suchen und finden

Beitrag von Pums » Mi 16. Jul 2014, 17:06

Vielen Dank klappt.

pstoelzg
Beiträge: 9
Registriert: Fr 8. Aug 2014, 10:38

Re: (gelöst)Suchen und finden

Beitrag von pstoelzg » So 10. Aug 2014, 17:50

Hallo Pums,

hier folgt ein anderer Lösungsansatz. Regular Expressions sind zwar sehr ellegant... Ich finde sie aber sehr unintuitiv.

Bleibt man bei den 'herkömmlichen' BASIC Funktionen, so kann man eine zweite Prüfung durchführen und damit die Anzahl der Characters eines Strings prüfen:

Code: Alles auswählen


REM  *****  BASIC  *****

Option Explicit

REM ============================================================================
REM
REM ============================================================================

Sub Main
	' Constants
	Const sSEARCH_PAT As String = "Hof"
	
	' Variables
	Dim iColIdx As Integer
	Dim iColIdxEnd As Integer
	Dim iRowIdx As Integer
	Dim iRowIdxEnd As Integer
	Dim oCell As Object
	Dim oDocCalc As Object
	Dim oSheet As Object
	Dim sCellCont As String
	
	' Initialize objects
	oDocCalc = ThisComponent
	' oSheet = oDocCalc.Sheets(0)
	oSheet = oDocCalc.getSheets().getByName("Sheet3")
	
	' Initialize variables
	iColIdxEnd = 5
	iRowIdxEnd = 20
	
	' Set column index
	For iColIdx = 0 To iColIdxEnd Step 1
		' Set row index
		For iRowIdx = 0 To iRowIdxEnd Step 1
			' Create cell object
			oCell = oSheet.getCellByPosition(iColIdx, iRowIdx)
			' Read string value from cell
			sCellCont = oCell.String
			
			' Check length (that is: number of characters)
			If Len(sCellCont) = Len(sSEARCH_PAT) Then
				' Check characters
				If sCellCont = sSEARCH_PAT Then
					' Change background color of cell with matching entry
					oCell.Cellbackcolor = RGB(0, 128, 0)
				End If
			End If
		Next iRowIdx
	Next iColIdx

	' Delete objects explicitly
	Set oSheet = Nothing
	Set oDocCalc = Nothing
	Set oCell = Nothing
End Sub

Zuletzt geändert von pstoelzg am Mo 11. Aug 2014, 10:33, insgesamt 2-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: (gelöst)Suchen und finden

Beitrag von karolus » So 10. Aug 2014, 18:53

Hallo

Das Thema ist seit drei Wochen durch.
Die Kommentare sind überflüssig, sie beschreiben lediglich das offensichtliche.
Die Namen sind grausam.
Dann auch noch "explizites deleten" von Objekten die nach Erreichen von end sub eh nicht mehr existieren
Die Prüfung `scellcontent = "Hof"` sollte doch wirklich ausreichen, :lol: oder glaubst das der Text "Hof" auch mal eine andere Länge als 3 hat ??
Postiv anzumerken bleibt eigentlich nur: Die Einrückung ist sauber !!


Ausserdem war die Fragestellung eine andere:
Pums hat geschrieben:Suchbegriff: "Hof"
Er findet
Hofnarr und Bierhof

Ich möchte aber das er nur nach den ersten 3 Buchstaben sucht.
Er soll bei eingabe von Hof halt nur Hofnarr finden, nicht Bierhof?
Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


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