Pagina 1 van 1
OPGELOST RowNumber
Geplaatst: za nov 27, 2010 1:27 pm
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
Re: RowNumber
Geplaatst: za nov 27, 2010 1:58 pm
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
Re: RowNumber
Geplaatst: za nov 27, 2010 2:30 pm
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.
Re: RowNumber
Geplaatst: za nov 27, 2010 7:15 pm
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
Re: OPGELOST RowNumber
Geplaatst: za nov 27, 2010 11:30 pm
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
Re: OPGELOST RowNumber
Geplaatst: zo nov 28, 2010 11:30 am
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.
Re: OPGELOST RowNumber
Geplaatst: zo nov 28, 2010 12:35 pm
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
Re: RowNumber
Geplaatst: ma nov 29, 2010 2:37 pm
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