OPGELOST RowNumber

OPGELOST RowNumber

Berichtdoor LeoDeWeerdt » za nov 27, 2010 1:27 pm

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   UitklappenInklappen
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 bijgewerkt door LeoDeWeerdt op za nov 27, 2010 7:17 pm, in totaal 1 keer bewerkt.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: RowNumber

Berichtdoor RPG » za nov 27, 2010 1:58 pm

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 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: RowNumber

Berichtdoor LeoDeWeerdt » za nov 27, 2010 2:30 pm

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
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: RowNumber

Berichtdoor LeoDeWeerdt » za nov 27, 2010 7:15 pm

De oplossing was te eenvoudig om snel te vinden. Kijk maar.
Het resultaat is dan het getal vermeld onder "Adres" + 1
Code: Selecteer alles   UitklappenInklappen
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   UitklappenInklappen
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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: OPGELOST RowNumber

Berichtdoor RPG » za nov 27, 2010 11:30 pm

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 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: OPGELOST RowNumber

Berichtdoor LeoDeWeerdt » zo nov 28, 2010 11:30 am

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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm

Re: OPGELOST RowNumber

Berichtdoor RPG » zo nov 28, 2010 12:35 pm

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 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: RowNumber

Berichtdoor LeoDeWeerdt » ma nov 29, 2010 2:37 pm

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   UitklappenInklappen
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   UitklappenInklappen
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   UitklappenInklappen
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.
LeoDeWeerdt
 
Berichten: 41
Geregistreerd: wo jan 06, 2010 4:26 pm


Keer terug naar Macro's

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast