OPGELOST RowNumber

LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

OPGELOST RowNumber

Bericht door LeoDeWeerdt »

In een Calc document vind ik, met de hieronder vermelde code (gedeelte van de totale macro.), de cel waarin de gezochte tekst (Te Zoeken Tekst) staat.
Voor verdere verwerking, heb ik het overeenkomend "RowNumber" van die cel nodig in de daarop volgende formules.
Kan iemand mij helpen dit RowNumber te benoemen?

Code: Selecteer alles

sub testfind
dim document   as object, dispatcher as object
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "SearchItem.SearchString"
	args1(0).Value = "Te Zoeken Tekst"
	dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub

Laatst gewijzigd door LeoDeWeerdt op za nov 27, 2010 7:17 pm, 1 keer totaal gewijzigd.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: RowNumber

Bericht door RPG »

Hallo

Als je het probleem met macro's wilt gaan oplossen dan moet je echt macro's gaan studeren. Dat is ook enkel en alleen in het Engels.

Om te beginnen kun je hier kijken. Speciaal voor opgenomen macro's kun je hier kijken.

Ik denk dat je er beter aan doet om iets te maken zodat je geen macro's nodig heb.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: RowNumber

Bericht door LeoDeWeerdt »

Romke,
Dank voor uw snelle reactie.
Ik ben inderdaad met het maken van macro's in Calc bezig. Maar soms is het probleem moeilijk te vinden wegens gebrek aan macrokennis. Daarom probeer ik langs deze weg "snel" een oplossing te vinden. In afwachting blijf ik zoeken naar een oplossing.
Om de vraag in het Engels te stellen ontbreekt mij zeker de kennis van de Engelstalige macro-termen. Dat is toekomstmuziek.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: RowNumber

Bericht door LeoDeWeerdt »

De oplossing was te eenvoudig om snel te vinden. Kijk maar.
Het resultaat is dan het getal vermeld onder "Adres" + 1

Code: Selecteer alles

Sub testfind
dim document   as object, dispatcher as object, Adres, oCell
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "SearchItem.SearchString"
	args1(0).Value = "gezochte tekst"
	dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
	oCell = ThisComponent.CurrentSelection
	Adres = oCell.CellAddress.Row
End Sub

Een betere oplossing van een OOO Forum geplukt.

Code: Selecteer alles

Sub testfind
Dim sAns, index,FandR
	sAns = InputBox("Enter what to find below.")
	If sAns = "" then End 'Blank entry or Cancel clicked.
	oDoc = ThisComponent
	oCell = oDoc.CurrentSelection 'Get active sheet index.
	index = oCell.CellAddress.Sheet
	oSheet = oDoc.getSheets.getByIndex(Index)'Get active sheet.
	FandR = oSheet.createSearchDescriptor 'Set up find and replace.
	FandR.setSearchString(sAns)
	'FandR.SearchWords = true 'Entire cell must match.
	oCell = oSheet.findFirst(FandR)
	If not isNull(oCell) then
		MsgBox "Row = " & oCell.CellAddress.Row & Chr(13) & "Column = " & oCell.CellAddress.Column
	Else MsgBox "Not Found!"
EndIf
End Sub
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: OPGELOST RowNumber

Bericht door RPG »

Hallo

Het is mooi dat je ook gezocht heb naar een betere oplossing. Ik weet niet waar je mee bezig bent maar heel vaak komt het voor dat er standaard al iets mogelijk is zonder macro's. Je zou misschien ook gebruik kunnen maken de zoekfunctie die er zijn.

Als je regelmatig kijkt op de verschillende forums dan kun je veel leren. In het begin is het moeilijk maar je leert ook de zien wie de goede antwoorden geeft.

Ook het grondig doorlezen van de helpfile kan helpen om het een en ander goed te begrijpen.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: OPGELOST RowNumber

Bericht door LeoDeWeerdt »

Inderdaad Romke, maar de weinige macro's die ik voor mijzelf maak zijn er om steeds weerkerende handelingen te vereenvoudigen.
Anderzijds vind ik het wel interessant en houdt het mijn geest bezig om mogelijk dementie te vermijden.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: OPGELOST RowNumber

Bericht door RPG »

Hallo

Er is geen bezwaar tegen het gebruik van macro's. En het blijven leren over een bepaald onderwerp is goed voor de mens. Ik doe zelf ook niet altijd verstandige dingen. De door mij gedane waarschuwing is gedaan daar velen de moeilijkheid van macros onderschatten. Als je er plezier in heb en gaat begrijpen hoe de macros werken dan wordt het ook gemakkelijker. Dit geldt zowel voor opgenomen macro's als voor echte macro's.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: RowNumber

Bericht door LeoDeWeerdt »

LeoDeWeerdt schreef:De oplossing was te eenvoudig om snel te vinden. Kijk maar.
Het resultaat is dan het getal vermeld onder "Adres" + 1

Code: Selecteer alles

Sub testfind
dim document   as object, dispatcher as object, Adres, oCell
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "SearchItem.SearchString"
	args1(0).Value = "gezochte tekst"
	dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
	oCell = ThisComponent.CurrentSelection
	Adres = oCell.CellAddress.Row
End Sub

Een betere oplossing van een OOO Forum geplukt.

Code: Selecteer alles

Sub testfind
Dim sAns, index,FandR
	sAns = InputBox("Enter what to find below.")
	If sAns = "" then End 'Blank entry or Cancel clicked.
	oDoc = ThisComponent
	oCell = oDoc.CurrentSelection 'Get active sheet index.
	index = oCell.CellAddress.Sheet
	oSheet = oDoc.getSheets.getByIndex(Index)'Get active sheet.
	FandR = oSheet.createSearchDescriptor 'Set up find and replace.
	FandR.setSearchString(sAns)
	'FandR.SearchWords = true 'Entire cell must match.
	oCell = oSheet.findFirst(FandR)
	If not isNull(oCell) then
		MsgBox "Row = " & oCell.CellAddress.Row & Chr(13) & "Column = " & oCell.CellAddress.Column
	Else MsgBox "Not Found!"
EndIf
End Sub
En verder ter info
Een derde -en volgens mij de beste- oplossing hieronder.
Het voordeel is dat het betreffende blad NIET op het scherm zichbaar hoeft te zijn.

Code: Selecteer alles

Sub testfindc
Dim index,FandR, Adres
	oDoc = ThisComponent
	oSheet = oDoc.getSheets.getByIndex("2")
	FandR = oSheet.createSearchDescriptor 'Set up find and replace.
	FandR.setSearchString("TE ZOEKEN TEKST")
	oCell = oSheet.findFirst(FandR)
	Adres = oCell.CellAddress.Row
End Sub
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
Plaats reactie