Microsoft Excel

Herbers Excel/VBA-Archiv

Hilfe bei einem Code

Betrifft: Hilfe bei einem Code von: Peter
Geschrieben am: 22.08.2014 15:31:44

Hallo,

ich habe folgenden Code.

Dabei soll, wenn in der Zelle A5 eine 1 steht, das Makro "Dax" und wenn nichts drin steht das Makro "Daxlöschen" ausgeführt werden.

Wenn jedoch in Zelle B5 eine 1 steht, soll eben das Makro "Mdax" und bei "" das Makro "Mdaxlöschen" ausgeführt werden.

Jetzt werden jedoch beide Makros ausgeführt. Also Dax + Mdax oder Daxlöschen und Mdaxlöschen, wenn in einer der Zellen A5 oder B5 oder C5 eine 1 oder "" steht.

Nun die Frage, wie kann ich das in dem Code eindeutig zuweisen?

Bin Anfänger in VBA und suche mir das alles irgedwie zusammen und versuche daraus zu lernen.
Jedoch bin ich gerade unter Zeitnot und wende mich deshalb an Euch.

Evtl. hat Ihr eine Idee.:-)

Grüße

Peter

Private Sub Worksheet_Change(ByVal Target As Range)

Set Target = Intersect(Target, Range("A5:c5"))
    If Target Is Nothing Then Exit Sub
    
  If Target = 1 Then
    Application.EnableEvents = False
        Call Dax
    Application.EnableEvents = True
    
        Else
            If Target = "" Then
            Application.EnableEvents = False
                Call Daxlöschen
            Application.EnableEvents = True
            
        End If
        
  End If
  
   If Target = 1 Then
    Application.EnableEvents = False
        Call MDAX
    Application.EnableEvents = True
    
        Else
            If Target = "" Then
            Application.EnableEvents = False
                Call MDAXlöschen
            Application.EnableEvents = True
            
        End If
        
  End If
  
End Sub

  

Betrifft: AW: Hilfe bei einem Code von: Hajo_Zi
Geschrieben am: 22.08.2014 15:36:08

Hallo Peter,
und welches bei B1 <>1 und <>""?

GrußformelHomepage


  

Betrifft: AW: Hilfe bei einem Code von: Peter
Geschrieben am: 22.08.2014 15:39:01

bei b5 = 1 soll "Mdax" und B5="" "Mdaxlöschen"

das soll später noch erweitert werden und für c5 soll dann eben ein weiteres Makro ausgeführt werden

D5 ebenso...etc:-)


  

Betrifft: AW: Hilfe bei einem Code von: Hajo_Zi
Geschrieben am: 22.08.2014 15:44:12

Gut Du möchtest meine Fragen nicht beantworten. Ich bin dann raus.

Option Explicit

' Dabei soll, wenn in der Zelle A5 eine 1 steht, das Makro "Dax" und wenn nichts drin steht das  _
Makro "Daxlöschen" ausgeführt werden.
' Wenn jedoch in Zelle B5 eine 1 steht, soll eben das Makro "Mdax" und bei "" das Makro "Mdaxlö _
schen" ausgeführt werden.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, Fals) = "A5" Then
        Application.EnableEvents = False
        If Target = 1 Then
            Dax
            If Range("B5") = 1 Then
                mdax
            ElseIf Range("B5") = "" Then
                Mdaxlöschen
            Else
                ' keine Aktion
            End If
            Dax
        ElseIf Target = "" Then
            Daxlöschen
            If Range("B5") = 1 Then
                mdax
            ElseIf Range("B5") = "" Then
                Mdaxlöschen
            Else
                ' keine Aktion
            End If
        Else
            ' keine Aktion
        End If
        Application.EnableEvents = True
    End If
End Sub
Gruß Hajo


  

Betrifft: AW: Hilfe bei einem Code von: Peter
Geschrieben am: 22.08.2014 15:51:42

ach meinst du, was passieren soll, wenn also was anderes als 1 oder "" in der Zelle B5 steht?
dann soll einfach nichts passieren.

Sorry, habe die Frage wohl nicht richtig verstanden. Wollte nicht unhöflich erscheinen.:-/


  

Betrifft: AW: Hilfe bei einem Code von: Peter
Geschrieben am: 22.08.2014 15:40:59

irgendwie evtl. muß ich auch einen genauen Bezug zu einer Zelle herstellen um das Makro auszuführen.

Heißt, wenn in A5 = 1 dann, call Dax, else A5 = "" dann "Daxlöschen"
für B5, c5 dann ebenso


  

Betrifft: AW: Hilfe bei einem Code von: Frank
Geschrieben am: 22.08.2014 17:14:22

Hallo Peter,

gut, dass Du versuchst Dich selber in VBA einzuarbeiten. Da wird Dir sicher gern geholfen.
Für mich vielleicht nochmal zum Mitmeisseln: In Zeile 5 darf immer nur in einer Zelle eine 1 stehen - wenn in B5 ne 1, dann in A5 und C5 und D5 etc ein ""? Und die Makros sollen ausgelöst werden, wenn sich ein Eintrag ändert?
Das würde heissen, beim obigen Beispiel, Du kannst nur für B5 das Makro für den Eintrag "" auslösen. Bei den anderen steht ja das "" schon drin.
Wenn dem so ist, musst Du zuerst allen anderen Zellen den Eintrag zuordnen, den sie haben sollen, wenn einer geändert wird - B5 auf 1, dann A5, C5, D5... auf "".
Du musst anhand der markierten Zelle feststellen, welches Makro gestartet werden soll - durch das Ändern des Eintrages kann sich ja mindestens ein anderer auch verändern (C5 vorher1 jetzt ""), was durch das Change-Ereignis auch erkannt und ausgewertet würde. In der Folge würde das Makro für C5 auf "" geändert auch ausgeführt werden.

Grüsse,
Frank