mehrfache abfrage des status von kontrollelementen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: mehrfache abfrage des status von kontrollelementen

von Toxitom » Mo, 23.01.2006 17:37

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 :D

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

von kannenklaus » Mo, 23.01.2006 16:07

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

von Toxitom » Mo, 23.01.2006 14:35

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:

Code: Alles auswählen

if oDlg.getControl("optSuErRange").state ...
Was erwartest du für ein Ergebnis? Das ist immer "True", egal, welche Stateigenschaft ausgegeben wird. Im zweiten Teil machst du es besser:

Code: Alles auswählen

... And oDlg.getControl("cbxSuEr1").state = 1 then 
Das Ergebnis des Ausdrucks "...state = 1" liefert entweder True oder False, also eine echte If-Bedingung.
Hier ansetzen!

Gruss
Thomas

mehrfache abfrage des status von kontrollelementen

von kannenklaus » Mo, 23.01.2006 13:43

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

Nach oben