Seite 1 von 1
mehrfache abfrage des status von kontrollelementen
Verfasst: Mo, 23.01.2006 13:43
von kannenklaus
hallo gruppe
ich erstelle gerade ein basic-tool für mehrfaches suchen/ersetzen (6 su/er-paare). dabei belibt die status abfrage bei den mit cbx beginnenden kontollelemente ohne wirkung. d.h. es ist egal, ob ich ein häkchen drin habe oder nicht der austausch wird immer vorgenommen. ich kann den fehler nicht erkennnen.
Code: Alles auswählen
Sub dlgStartSuErMultiple
DialogLibraries.LoadLibrary("Standard")
'--Dialog wird aufgerufen und angezeigt
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgSuErMulitple) 'Dialog anlegen
oDlg.execute()
'--1. Paar ermittelt die Suchen-Ersetzungspaare durch Abfrage der state-Eigenschaft und wendet je
'--nach Option den Suchen/Ersetzen-Vorgang in den selektierten Zellen oder allen Blättern an
If oDlg.getControl("optSuErRange").state And oDlg.getControl("cbxSuEr1").state = 1 then
Call SuErMultiple'bei der Option wird das Makro SuErMultiple aufgerufen
ElseIf oDlg.getControl("optSuErAlleBlaetter").state And oDlg.getControl("cbxSuEr1").state = 1 then
Call SuErMultipleAlleBlaetter'bei der Option werden alle Blätter durchsucht
freue mich auf eine antwort.
gruß
klaus
Verfasst: Mo, 23.01.2006 14:35
von Toxitom
Hey Klaus,
ich kann den fehler nicht erkennnen.
Die If-Bedingungen!
Die State-Eigenschaft liefert int-Werte als Rückgabe, keine Boolschen Ausdrücke. Wenn du also abfragst:
Was erwartest du für ein Ergebnis? Das ist
immer "True", egal, welche Stateigenschaft ausgegeben wird. Im zweiten Teil machst du es besser:
Das Ergebnis des Ausdrucks "...state = 1" liefert entweder True oder False, also eine echte If-Bedingung.
Hier ansetzen!
Gruss
Thomas
Verfasst: Mo, 23.01.2006 16:07
von kannenklaus
hallo thomas
auch wenn ich state nach 1 abfrage wird immer der su/er-vorgang durchgeführt, ganz unabhängig davon, ob ein häkchen drin ist oder nicht.
Code: Alles auswählen
Option Explicit
Dim oDlg as Object
Sub dlgStartSuErMultiple
DialogLibraries.LoadLibrary("Standard")
'--Dialog wird aufgerufen und angezeigt
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgSuErMultiple) 'Dialog anlegen
oDlg.execute()
Dim oConSel as Object
Dim oConAlleBlaetter as Object
oConSel = oDlg.getControl("optSuErRange").getModel()
oConAlleBlaetter = oDlg.getControl("optSuErAlleBlaetter").getModel()
'--1. Paar: ermittelt die Suchen-Ersetzungspaare durch Abfrage der state-Eigenschaft und wendet je
'--nach Option den Suchen/Ersetzen-Vorgang in den selektierten Zellen oder allen Blättern an
If oConSel.state = 1 And oDlg.getControl("cbxSuEr1").state = 1 then
Call SuErMultiple'bei der Option wird das Makro SuErMultiple aufgerufen
ElseIf oConAlleBlaetter.state = 1 And oDlg.getControl("cbxSuEr1").state = 1 then
Call SuErMultipleAlleBlaetter'bei der Option werden alle Blätter durchsucht
die alternative liefert das gleiche ergebnsi/fehler
Code: Alles auswählen
Option Explicit
Dim oDlg as Object
Sub dlgStartSuErMultiple
DialogLibraries.LoadLibrary("Standard")
'--Dialog wird aufgerufen und angezeigt
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgSuErMultiple) 'Dialog anlegen
oDlg.execute()
Dim oConSel as Object
Dim oConAlleBlaetter as Object
Dim oConSuEr1 as Object
Dim oConSuEr2 as Object
oConSel = oDlg.getControl("optSuErRange").getModel()
oConAlleBlaetter = oDlg.getControl("optSuErAlleBlaetter").getModel()
oConSuEr1 = oDlg.getControl("cbxSuEr1").getModel()
oConSuEr2 = oDlg.getControl("cbxSuEr2").getModel()
'--1. Paar: ermittelt die Suchen-Ersetzungspaare durch Abfrage der state-Eigenschaft und wendet je
'--nach Option den Suchen/Ersetzen-Vorgang in den selektierten Zellen oder allen Blättern an
If oConSel.state = 1 And oConSuEr1.state = 1 then
Call SuErMultiple'bei der Option wird das Makro SuErMultiple aufgerufen
ElseIf oConAlleBlaetter.state = 1 And oConSuEr1.state = 1 then
Call SuErMultipleAlleBlaetter'bei der Option werden alle Blätter durchsucht
'--2. Paar ermittelt die Suchen-Ersetzungspaare durch Abfrage der state-Eigenschaft und wendet je
'--nach Option den Suchen/Ersetzen-Vorgang in den selektierten Zellen oder allen Blättern an
ElseIf oConSel.state = 1 And oConSuEr2.state = 1 then
Call SuErMultiple'bei der Option wird das Makro SuErMultiple aufgerufen
ElseIf oConAlleBlaetter.state = 1 And oConSuEr2.state = 1 then
Call SuErMultipleAlleBlaetter'bei der Option werden alle Blätter durchsucht
wo liegt der fehler?
gruß klaus
Verfasst: Mo, 23.01.2006 17:37
von Toxitom
Hey Klaus,
wo liegt der fehler?
Keine Ahnung - vielleicht im fehlenden Teil?
hier sieht alles gut aus. Du brauchst allerdings nicht das Model() - sondern den Control selbst! Ist aber wahrscheinlich auch egal - das ERgebnis dürfte das gleiche sein....
Also, ich hab deinen Code grob verviollständigt und getestet - funktioniert einwandfrei - so, wie er soll
Code: Alles auswählen
Dim oDlg as Object
Sub dlgStartSuErMultiple
DialogLibraries.LoadLibrary("Standard")
'--Dialog wird aufgerufen und angezeigt
oDlg=CreateUnoDialog(DialogLibraries.Standard.dlgSuErMultiple) 'Dialog anlegen
oDlg.execute()
Dim oConSel as Object
Dim oConAlleBlaetter as Object
oConSel = oDlg.getControl("optSuErRange")'.getModel()
oConAlleBlaetter = oDlg.getControl("optSuErAlleBlaetter")'.getModel()
msgbox "1: " & oDlg.getControl("cbxSuEr1").state & chr(13) & _
"2: " & oConSel.state & chr(13) & _
"3: " & oConAlleBlaetter.state
'--1. Paar: ermittelt die Suchen-Ersetzungspaare durch Abfrage der state-Eigenschaft und wendet je
'--nach Option den Suchen/Ersetzen-Vorgang in den selektierten Zellen oder allen Blättern an
If oConSel.state = 1 And oDlg.getControl("cbxSuEr1").state = 1 then
'Call SuErMultiple'bei der Option wird das Makro SuErMultiple aufgerufen
msgbox "ch1 und ch2 = 1"
ElseIf oConAlleBlaetter.state = 1 And oDlg.getControl("cbxSuEr1").state = 1 then
'Call SuErMultipleAlleBlaetter'bei der Option werden alle Blätter durchsucht
msgbox "ch1 und ch3 = 1"
else
msgbox "nix"
end if
end sub
Also, weiss nicht, was du sonst noch so tust
Gruss
Thomas