Nach einem Wortteil im Wort suchen
Moderator: Moderatoren
-
- **
- Beiträge: 28
- Registriert: Fr, 05.01.2018 08:38
Nach einem Wortteil im Wort suchen
Hallo Zusammen,
ich habe eine Makro das beim Suchen einen bestimmtes Wort findet. Das klappt auch sehr gut,
allerdings will ich, dass er nach einem Wortteil im Wort sucht. z.B. in der Zelle steht, Mustermann, Max.
Ich gebe in der Suche "Mustermann" an, aber er findet nichts...gebe ich aber Mustermann, Max an, dann
zeigt er mir das Ergebnis richtig an. Ich benutze dafür "FindeAlle".
Kann mir jemand schreiben, welches Wort ich verwenden muss im Makro, dass er nach Wortteilen sucht?
Gruß an Alle
ich habe eine Makro das beim Suchen einen bestimmtes Wort findet. Das klappt auch sehr gut,
allerdings will ich, dass er nach einem Wortteil im Wort sucht. z.B. in der Zelle steht, Mustermann, Max.
Ich gebe in der Suche "Mustermann" an, aber er findet nichts...gebe ich aber Mustermann, Max an, dann
zeigt er mir das Ergebnis richtig an. Ich benutze dafür "FindeAlle".
Kann mir jemand schreiben, welches Wort ich verwenden muss im Makro, dass er nach Wortteilen sucht?
Gruß an Alle
Re: Nach einem Wortteil im Wort suchen
ohne Deinen Code zu kennen scheint mir eine Antwort schwierig, aber wenn Du mit nativen Code arbeitest müssten im Searchdescriptor angegeben sein:
Gruß
Stephan
Code: Alles auswählen
.SearchString = "Mustermann.*"
.SearchRegularExpression = True
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Fr, 05.01.2018 08:38
Re: Nach einem Wortteil im Wort suchen
Hallo Stephan,
vielen Dank für deine schnelle Antwort.
Ich hab dir mal meinen Code eingefügt. Vielleicht siehst du mehr als ich, irgendwie sehe ich den Wald vor Bäumen nicht. Mach ich da was falsch?
function FindeAlle (sText$, iSel )
SFlag = 71696
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")
if iSel = 0 then
SFlag = 65552
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
endif
rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = SFlag '71696 ' 65552 '
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = sText
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1
vielen Dank für deine schnelle Antwort.
Ich hab dir mal meinen Code eingefügt. Vielleicht siehst du mehr als ich, irgendwie sehe ich den Wald vor Bäumen nicht. Mach ich da was falsch?
function FindeAlle (sText$, iSel )
SFlag = 71696
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")
if iSel = 0 then
SFlag = 65552
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
endif
rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = SFlag '71696 ' 65552 '
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = sText
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1
Re: Nach einem Wortteil im Wort suchen
ich sehe leider nicht wo in dem Code den Du gepostet hast "sText" definiert ist und was desen Inhalt ist.
Wenn ich selbst aufzeichne komme ich zu:
sub Main
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 ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 1
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = true
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Mustermann.*"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
(sog.) nativen Code für die Such kannst Du Dir im Übrigen in Kapitel 9 in:
http://www.calc-info.de/files/Calc_StarBasic.pdf
ansehen.
Gruß
Stephan
Wenn ich selbst aufzeichne komme ich zu:
sub Main
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 ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 1
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = true
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Mustermann.*"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
(sog.) nativen Code für die Such kannst Du Dir im Übrigen in Kapitel 9 in:
http://www.calc-info.de/files/Calc_StarBasic.pdf
ansehen.
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Fr, 05.01.2018 08:38
Re: Nach einem Wortteil im Wort suchen
Vielen Dank euch beiden für die tolle Unterstützung. Ich habe jetzt mal den gesamten Code angefügt.
Das Makro sucht nach dem Begriff und erstellt danach eine neue Tabelle mit dem Suchergebnis. Das klappt
auch wunderbar, allerdings eben nur der exakte Suchbegriff...Auch muss ich feststellen, dass die Formate#
wie Zeilengröße und Spaltenbreite nicht richtig übernommen werden.
sub Findeundkopiereergebnis
oCalc = ThisComponent
oSheet = oCalc.CurrentSelection.Spreadsheet
Dim oDialog as object
Dim iDlgOK as integer
DialogLibraries.loadLibrary( "Standard")
oDialogLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oDialogLib.getByName("Dialog1"))
iDlgOK = oDialog.Execute()
if iDlgOK = 1 then
bHL = oDialog.Model.CheckBox1.state
myString = oDialog.GetControl("TextField1").Text
end if
oDialog.dispose()
if Len(myString) = 0 then exit sub
oCalc.lockcontrollers
mAllText = split(myString,";")
for i=0 to uBound(mAllText)
result = FindeAlle( mAllText(i), Sel)
if result(0) = "-" then
mAllText(i) = mAllText(i) & " - leider kein Suchergebnis"
goto jumpover
else
ix=1
newTable = mAllText(i)
do while oCalc.Sheets.hasByName(newTable)
ix = ix+1
newTable = mAllText(i) & "(" & ix &")"
if oCalc.Sheets.count > 10 then
msgbox "uups, zuviele Tabellenblätter, bitte Tabellen mit Suchergebnissen löschen"
exit sub
endif
loop
Sheet=oCalc.createInstance("com.sun.star.sheet.Spreadsheet")
oCalc.Sheets.insertByName(newTable, sheet)
endif
if bHL = 1 then
oSheet2 = oCalc.Sheets.getByName(newTable)
oSourceRange = oSheet.getCellRangeByPosition(0,0,1023,0)
oSourceRangeAddresse = oSourceRange.getRangeAddress
oTarget = oSheet2.getCellByPosition(0,0)
oTargetCellAdresse = oTarget.getCellAddress
oSheet2.copyRange(oTargetCellAdresse,oSourceRangeAddresse)
end if
for iR = 0 to uBound(result)
oSheet2 = oCalc.Sheets.getByName(newTable)
oSourceRange = oSheet.getCellRangeByPosition(0,result(ir),1023,result(iR))
oSourceRangeAddresse = oSourceRange.getRangeAddress
oTarget = oSheet2.getCellByPosition(0,iR+1)
oTargetCellAdresse = oTarget.getCellAddress
oSheet2.copyRange(oTargetCellAdresse,oSourceRangeAddresse)
oSheet2.Columns.OptimalWidth = True
next
jumpover:
next
oCalc.unlockcontrollers
myView = oCalc.CurrentController
osheet = oCalc.sheets(0)
mycell = osheet.getCellByPosition(XC,XR)
myView.Select(mycell)
gostart
end sub
function FindeAlle (sText, iSel )
SFlag = 71696
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")
if iSel = 0 then
SFlag = 65552
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
endif
rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = SFlag
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = sText
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
oCalc = thisComponent
Selected = oCalc.CurrentSelection
if Selected.supportsService("com.sun.star.sheet.SheetCell" ) then
dim eRow(0)
eRow(0) = Selected.CellAddress.Row
if Selected.String = sText then
FindeAlle = eRow()
else
eRow(0) = "-"
FindeAlle = eRow()
endif
end if
if Selected.supportsService("com.sun.star.sheet.SheetCellRanges" ) then
nR = uBound(Selected.RangeAddresses())
dim xRows(nR) as String
for i=0 to nR
xRows(i) = Selected.rangeAddresses(i).StartRow
next
FindeAlle = xRows()
end if
end function
sub FindeAlleSelection
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 ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71696
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Frank"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
sub gostart
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
end sub
Das Makro sucht nach dem Begriff und erstellt danach eine neue Tabelle mit dem Suchergebnis. Das klappt
auch wunderbar, allerdings eben nur der exakte Suchbegriff...Auch muss ich feststellen, dass die Formate#
wie Zeilengröße und Spaltenbreite nicht richtig übernommen werden.
sub Findeundkopiereergebnis
oCalc = ThisComponent
oSheet = oCalc.CurrentSelection.Spreadsheet
Dim oDialog as object
Dim iDlgOK as integer
DialogLibraries.loadLibrary( "Standard")
oDialogLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oDialogLib.getByName("Dialog1"))
iDlgOK = oDialog.Execute()
if iDlgOK = 1 then
bHL = oDialog.Model.CheckBox1.state
myString = oDialog.GetControl("TextField1").Text
end if
oDialog.dispose()
if Len(myString) = 0 then exit sub
oCalc.lockcontrollers
mAllText = split(myString,";")
for i=0 to uBound(mAllText)
result = FindeAlle( mAllText(i), Sel)
if result(0) = "-" then
mAllText(i) = mAllText(i) & " - leider kein Suchergebnis"
goto jumpover
else
ix=1
newTable = mAllText(i)
do while oCalc.Sheets.hasByName(newTable)
ix = ix+1
newTable = mAllText(i) & "(" & ix &")"
if oCalc.Sheets.count > 10 then
msgbox "uups, zuviele Tabellenblätter, bitte Tabellen mit Suchergebnissen löschen"
exit sub
endif
loop
Sheet=oCalc.createInstance("com.sun.star.sheet.Spreadsheet")
oCalc.Sheets.insertByName(newTable, sheet)
endif
if bHL = 1 then
oSheet2 = oCalc.Sheets.getByName(newTable)
oSourceRange = oSheet.getCellRangeByPosition(0,0,1023,0)
oSourceRangeAddresse = oSourceRange.getRangeAddress
oTarget = oSheet2.getCellByPosition(0,0)
oTargetCellAdresse = oTarget.getCellAddress
oSheet2.copyRange(oTargetCellAdresse,oSourceRangeAddresse)
end if
for iR = 0 to uBound(result)
oSheet2 = oCalc.Sheets.getByName(newTable)
oSourceRange = oSheet.getCellRangeByPosition(0,result(ir),1023,result(iR))
oSourceRangeAddresse = oSourceRange.getRangeAddress
oTarget = oSheet2.getCellByPosition(0,iR+1)
oTargetCellAdresse = oTarget.getCellAddress
oSheet2.copyRange(oTargetCellAdresse,oSourceRangeAddresse)
oSheet2.Columns.OptimalWidth = True
next
jumpover:
next
oCalc.unlockcontrollers
myView = oCalc.CurrentController
osheet = oCalc.sheets(0)
mycell = osheet.getCellByPosition(XC,XR)
myView.Select(mycell)
gostart
end sub
function FindeAlle (sText, iSel )
SFlag = 71696
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")
if iSel = 0 then
SFlag = 65552
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
endif
rem ----------------------------------------------------------------------
dim args2(17) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 0
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = SFlag
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = sText
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = ""
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1024
args2(17).Name = "SearchItem.Command"
args2(17).Value = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
oCalc = thisComponent
Selected = oCalc.CurrentSelection
if Selected.supportsService("com.sun.star.sheet.SheetCell" ) then
dim eRow(0)
eRow(0) = Selected.CellAddress.Row
if Selected.String = sText then
FindeAlle = eRow()
else
eRow(0) = "-"
FindeAlle = eRow()
endif
end if
if Selected.supportsService("com.sun.star.sheet.SheetCellRanges" ) then
nR = uBound(Selected.RangeAddresses())
dim xRows(nR) as String
for i=0 to nR
xRows(i) = Selected.rangeAddresses(i).StartRow
next
FindeAlle = xRows()
end if
end function
sub FindeAlleSelection
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 ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71696
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Frank"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
sub gostart
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
end sub
Re: Nach einem Wortteil im Wort suchen
Augenscheinlich, doch zumindest weil Du nur den exakten Suchbegriff für die Suche verwendest und keinen regulären Ausdruck der Form "Mustermann.*".allerdings eben nur der exakte Suchbegriff
Zumindest erkenne ich nicht wo im Folgenden ein ".*" Bestandteil von mAllText(i) wäre, oder stehen wirklich ".*" in oDialog.GetControl("TextField1").Text?
Code: Alles auswählen
mAllText = split(myString,";")
for i=0 to uBound(mAllText)
result = FindeAlle( mAllText(i), Sel)
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Fr, 05.01.2018 08:38
Re: Nach einem Wortteil im Wort suchen
Hallo Stephan,
sorry für die verspätete Antwort. Ich stehe immer noch irgendwie auf dem Schlauch. Was meinst du mit "Mustermann" Meinst du das ich
das TextField1 abändern muss
oDialog1.GetControl("TextField1")
Sollte ich die "," durch etwas anderes ersetzen?
Gruß Pretender
sorry für die verspätete Antwort. Ich stehe immer noch irgendwie auf dem Schlauch. Was meinst du mit "Mustermann" Meinst du das ich
das TextField1 abändern muss
oDialog1.GetControl("TextField1")
Sollte ich die "," durch etwas anderes ersetzen?
Gruß Pretender
Re: Nach einem Wortteil im Wort suchen
Ich schrieb nichts von "Musterman", sondern hatte das Entscheidende sogar rot hervorgehoben:Was meinst du mit "Mustermann"
"Mustermann.*"
"muss" nicht. Wo Du die Änderung machst (im Textfeld oder in der Aufbereitung des Suchbegriffs aus dem Text des Text) ist auch uninteresant nur am Ende muss ein regulärer Suchausdruck stehen.Meinst du das ich
das TextField1 abändern muss
neinSollte ich die "," durch etwas anderes ersetzen?
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Fr, 05.01.2018 08:38
Re: Nach einem Wortteil im Wort suchen
Hallo Stephan,
dank dir habe ich nun den Fehler korrigieren können und es funktioniert jetzt mit der Suche
nach einem Wortteil ).
Allerdings musste ich feststellen, dass nach einem erfolgreichem Ergebnis und dem neuen erzeugtem
Tabellenblatt, das Menü mit der Fundstelle nochmals aufpoppt anstatt geschlossen zu bleiben.
Hast du auch dafür eine Idee. dass nach der Abfrage das Menü mit dem Ergebnis nicht erneut aufgeht (siehe Bild)
Gruß Pretender
dank dir habe ich nun den Fehler korrigieren können und es funktioniert jetzt mit der Suche
nach einem Wortteil ).
Allerdings musste ich feststellen, dass nach einem erfolgreichem Ergebnis und dem neuen erzeugtem
Tabellenblatt, das Menü mit der Fundstelle nochmals aufpoppt anstatt geschlossen zu bleiben.
Hast du auch dafür eine Idee. dass nach der Abfrage das Menü mit dem Ergebnis nicht erneut aufgeht (siehe Bild)
Gruß Pretender
- Dateianhänge
-
- Suchergebnis.JPG (36.79 KiB) 2571 mal betrachtet
Re: Nach einem Wortteil im Wort suchen
Augenscheinlich weil Du "FindeAlle" u.U. mehrfach aufrufst:Allerdings musste ich feststellen, dass nach einem erfolgreichem Ergebnis und dem neuen erzeugtem
Tabellenblatt, das Menü mit der Fundstelle nochmals aufpoppt anstatt geschlossen zu bleiben.
Code: Alles auswählen
for i=0 to uBound(mAllText)
result = FindeAlle( mAllText(i), Sel)
Gruß
Stephan