Rulare cod VBA dupa valoare din dropdown

Informatii despre cum se utilizeaza Microsoft Excel 2007. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de RAMBO » Joi Apr 01, 2010 10:35 am

Scuze am facut o gresala. Este vorba de foaia Stafilococi, celula D7.

Dr. Cloud
Mesaje: 3327
Membru din: Mar Oct 02, 2012 11:19 am

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de Dr. Cloud » Joi Apr 01, 2010 10:41 am

Ia incearca asa:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 7 And Target.Column = 4 Then
        Range("I18:I20").ClearContents
    End If
End Sub

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de gecs » Joi Apr 01, 2010 10:44 am

De ce mai ai nevoie si de ultimul AND din linia cu IF-ul ?

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 4 And Target.Column = 1 And Target.Value = "gyufugv" Then
        Range("C8:C9").ClearContents
    End If
End Sub
Sterge-l p-ala si o sa funcioneze:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 4 And Target.Column = 1 Then
        Range("C8:C9").ClearContents
    End If
End Sub

RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de RAMBO » Joi Apr 01, 2010 10:46 am

Scuze. Este vorba de foaia Stafilococi, celula D7.

RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de RAMBO » Joi Apr 01, 2010 10:50 am

Da. Merge. Multumesc.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Rulare cod VBA dupa valoare din dropdown

Mesaj de gecs » Joi Apr 01, 2010 11:10 am

Inlocuieste codul:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 7 And Target.Column = 4 And Target.Value = "-" Then
        Range("I18:I20").ClearContents
    End If
If Target.Row = 7 And Target.Column = 4 And Target.Value = "+" Then
        Range("H3:H11").ClearContents
    End If
End Sub
cu asta:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 7 And Target.Column = 4 Then
        If Target.Value = "-" Then
            Range("I18:I20").ClearContents
        Else
            If Target.Value = "+" Then
                Range("H3:H11").ClearContents
            End If
        End If
    End If
End Sub
De fapt, mai bun ar fi un cod ca cel de mai jos, pentru ca orice modificare de continut ale celulelor din foaie prin codul scris in procedura asociata evenimentului "Change" produce ceea ce se numeste "cascading events", adica declansarea evenimentului "Change" pentru orice modificare de continut al unei celule din foaia respectiva. Liniile de cod:

Cod: Selectaţi tot

Application.EnableEvents = False
si

Cod: Selectaţi tot

Application.EnableEvents = True
dezactiveaza declansarea de evenimente pentru modificarile produse in foaie de liniile de cod vba care sunt scrise intre cele doua linii de cod de mai sus.

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 7 And Target.Column = 4 Then
        Application.EnableEvents = False
        If Target.Value = "-" Then
            Range("I18:I20").ClearContents
        Else
            Range("H3:H11").ClearContents
        End If
        Application.EnableEvents = True
    End If
End Sub

Închis

Înapoi la “Intrebari despre Excel 2007”