2017-06-16 1 views
0

Ich habe ein Problem mit meinen Optionsschaltflächen verbundenen Zellen. Ich möchte ein Makro laden, wenn sich der Wert der verknüpften Zelle ändert. Ich habe zwei verschiedene Methoden versucht, und keine von ihnen wird nicht funktionieren, wenn die Schaltfläche den Wert ändert. Wenn ich eine ausgewählte Zelle einen Wert eintippe, werden meine Makros geladen.Aktion, wenn die verknüpfte Zelle der Optionsschaltfläche sich ändert

Hier sind meine zwei Techniken:

Private Cel_CONGESg As Byte 
Private Sub Worksheet_Calculate() 
Dim Ws As Worksheet 

Set Ws = ThisWorkbook.Sheets("Externe") 

If Ws.Range("$I$12").Value <> Cel_CONGESg Then 
    MsgBox "heheheheeheheheheee" 
End If 

Cel_CONGESg = Ws.Range("$I$12").Value 

End Sub 

Die zweite Methode

Private Sub Worksheet_Change(ByVal target As Range) 
Dim CongesG 
Dim Ws As Worksheet 

Set CongesG = Ws.Range("$I$12") 

If Not Application.Intersect(CongesG, Range(target.Address)) _ 
     Is Nothing Then 
    If Ws.Range("$I$12").Value = 2 Or Ws.Range("$I$12").Value = 0 Then 
     Ws.Range("$I$13").EntireRow.Hidden = True 
      With Range("H12:L12").Borders(xlEdgeBottom) 
       .LineStyle = xlDot 
       .Color = RGB(51, 63, 79) 
       .Weight = xlThin 
      End With 
    ElseIf Ws.Range("$I$12").Value = 1 Then 
     Ws.Range("$I$13").EntireRow.Hidden = False 
      With Range("H12:L12").Borders(xlEdgeBottom) 
       .LineStyle = xlNone 
      End With 
    End If 'I12 Congés 
End If 'Application intersect CongesG 
End Sub 

Könnten Sie mir bitte helfen zu verstehen, was ist das Problem?

Vielen Dank im Voraus. Ich wünsche ihnen einen wunderbaren Tag.

Jean

enter image description here

Antwort

0

Sie sind nicht die vollen Möglichkeiten des Worksheet_Change Ereignis verwenden und Target, die bereits als Range definiert ist.

Versuchen Sie den Code unten:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim CongesG As Range 

Set CongesG = Range("$I$12") 

If Not Application.Intersect(CongesG, Target) Is Nothing Then 
    Application.EnableEvents = False 
    Select Case Target.Value 
     Case 2, 0 
      Target.Offset(1).EntireRow.Hidden = True 
      With Range("H12:L12").Borders(xlEdgeBottom) 
       .LineStyle = xlDot 
       .Color = RGB(51, 63, 79) 
       .Weight = xlThin 
      End With 
     Case 1 
      Target.Offset(1).EntireRow.Hidden = False 
      With Range("H12:L12").Borders(xlEdgeBottom) 
       .LineStyle = xlNone 
      End With 
    End Select 
End If 'Application intersect CongesG 
Application.EnableEvents = True 

End Sub 
+0

Hallo Shai und vielen Dank für Ihre Zeit. Leider funktioniert dieser Code nicht ... Es gibt absolut keinen Effekt auf das Blatt :((Ich kopiere/stecke es vollständig, um sicher zu gehen.) EDIT: Wenn ich die Zeile manuell ändere (nicht mit dem Optionsfeld), tut es das Das gleiche Problem wie zuvor. –

+0

Nach weiteren Recherchen denke ich, was ich tun möchte, ist nicht möglich ... Es scheint, ein Arbeitsblatt_change oder ein Arbeitsblatt_calculate ist nicht möglich, wenn die ändernde Zelle durch eine andere Aktion (CheckBox oder geändert wird) Options Button) Ich muss vielleicht eine Formel auf meine verknüpfte Zelle setzen (zB O12: "= I12") und es wird funktionieren, oder jedem Optionsfeld einen Makro zuweisen. Diese letzte Option trifft nicht zu, wenn keiner meiner Optionsschalter ist aktiviert (Wert = 0) Weitere Informationen [hier] (https://stackoverflow.com/questions/20377911/change-worksheet-when-a-cell-value-and-a-checkbox-change) –

+0

Ein anderes Thema darüber , siehe [Neil Flaming's 2010-10-07 Antwort] (https://www.experts-exchange.com/questions/26526885/Run-code-when-cell-value-change s-als-ein-ergebnis-einer-aktion.html). Wenn Sie irgendeine Ahnung haben, lassen Sie es mich wissen! : D –

Verwandte Themen