sowas wie "Zirkelbezug" oder sowas in VBA

Bild

Betrifft: sowas wie "Zirkelbezug" oder sowas in VBA
von: Franz W.
Geschrieben am: 08.12.2003 20:44:57

Hallo Fachleute,

ich habe mir so was Ähnliches wie einen Zirkelbezug in VBA eingebrockt, weiß nicht wie man so was in VBA nennt. Aber vor allem weiß ich nicht, wie ich das lösen kann und bitte Euch deshalb um Ideen.

In einer UF ist eine Combobox "cmbAuswahl" mit folgendem Makro. Makro1:


Private Sub cmbAuswahl_Change()
    Application.ScreenUpdating = False
    Call AenderungenEintragen
End Sub



Das Makro "AenderungenEintragen" (für Eure Nerven gekürzt :-))), Makro2:

Sub AenderungenEintragen()
ActiveSheet.Unprotect
With dlgKdAendern
Cells(r, 3) = .cmbTitel
Cells(r, 4) = .txtNName
Cells(r, 5) = .txtVName
Cells(r, 6) = .txtco
' Cells(r, 7) = .txtStrasse
Cells(r, 7) = .cmbStrasse
Cells(r, 8) = .txtPLZ
Cells(r, 9) = .txtOrt
Cells(r, 10) = .txtObjekt
Cells(r, 11) = .txtKtoNr
Cells(r, 12) = .txtBLZ
Cells(r, 13) = .txtBank
End With
End Sub


Es beginnt bei einer Änderung in der Box also Makro1 und Makro2 wird aufgerufen.

Aber schon die ZEile " Cells(r, 3) = .cmbTitel " bewirkt wieder eine Änderung in der Kombobox, weshalb sofort wieder Makro1 startet.

Das ruft wieder das Makro2 auf, das JETZT ALLERDINGS BIS ZU ENDE läuft.

Dann geht es im Makro1 zur Zeile "End Sub
". Ist aber noch nicht vorbei!!!

Jetzt geht's in Makro2 weiter mit der nächsten Zeile " Cells(r, 4) = .txtNName ". Was wiederum eine Änderung in der Kombobox auslöst, weshalb er wieder ... und jetzt das gleich wie eben. Und das für jede einzelne Zeile aus Makro2.

Vielen Dank schon mal für aufmerksame Durchlesen bis hierher. Hat jemand eine Idee für mich, wie ich das anders machen kann??

Danke schon mal für Eure Hilfe und beste Grüße
Franz
Bild


Betrifft: AW: sowas wie "Zirkelbezug" oder sowas in VBA
von: K.Rola
Geschrieben am: 08.12.2003 21:13:24

Hallo,

eine einfache Möglichkeit

im Deklarationsteil:
Dim bolSperren as Boolean


Private Sub cmbAuswahl_Change()
    if bolSperren then exit sub
    Application.ScreenUpdating = False
    Call AenderungenEintragen
End Sub


Sub AenderungenEintragen()
bolSperren = true
ActiveSheet.Unprotect
With dlgKdAendern
Cells(r, 3) = .cmbTitel
Cells(r, 4) = .txtNName
Cells(r, 5) = .txtVName
Cells(r, 6) = .txtco
' Cells(r, 7) = .txtStrasse
Cells(r, 7) = .cmbStrasse
Cells(r, 8) = .txtPLZ
Cells(r, 9) = .txtOrt
Cells(r, 10) = .txtObjekt
Cells(r, 11) = .txtKtoNr
Cells(r, 12) = .txtBLZ
Cells(r, 13) = .txtBank
End With
bolSperren = false
End Sub


Gruß K.Rola


Bild


Betrifft: Super, das klappt!!
von: Franz W.
Geschrieben am: 08.12.2003 21:36:46

Hallo K.Rola,

ganz herzlichen Dank, das haut hin!! Hab zwar auch grade mit einer Booleschen Variablen rumgetan, waren aber eher Experimente - noch ohne Erfolg.

Vielen Dank und Grüße
Franz


Bild

Beiträge aus den Excel-Beispielen zum Thema " Kopieren von Zellen mit =Verketten...: Bezugfehler"