2016-09-21 4 views
-1

Ich bin auf der Suche nach etwas Unterstützung auf, wie Sie die Fortsetzung des Makros basierend auf dem Wert einer Zelle bitte auslösen.So führen Sie Makro basierend auf dem Inhalt der Zelle

Was ich hoffe ist, dass wenn Zelle A1 = Zelle B1, ich es brauche, um eine Aufgabe durchzuführen, sonst Skript beenden.

Ich nehme an, das wäre ein einfaches If... Then Skript? Jede Hilfe wird sehr geschätzt!

+0

Dergleichen ist in der Regel durch das Schreiben eines Ereignishandler für das 'Worksheet_Change' Ereignis gemacht. Es ist einfach, verschiedene Beispiele online zu finden. –

Antwort

1

Hier ist eine Möglichkeit, es ist anzunehmen, dass alle Ihre Werte bereits vorhanden sind und Sie einen Check durchführen, anstatt jemanden live zu tippen. In diesem Fall wäre John ein guter Weg. Was ich jedoch an workheet_change nicht mag, ist, dass nach dem Ausführen des Makros nicht mehr rückgängig gemacht werden kann. Ich fügte hinzu, wenn Länge> 0, als ob Sie zwei leere Zellen hätten, würde es immer noch auslösen.

Sub TestValues() 

'Define variables 
Dim rng As Range 
Dim cell As Range 

'Set variables 
Set rng = Range("A1:A10") 

'Begin 
For Each cell In rng 
    If Len(cell) > 0 Then 
     If cell.Value = cell.Offset(0, 1).Value Then 
      'Run macro 
     End If 
    End If 
Next cell 

End Sub 

* Edit - ich denke, ich es genau richtig gelesen nicht. Aus irgendeinem Grund dachte ich, du hättest eine Reihe von Werten durchmachen können. Tun genau das, was Sie wollen es eher wie diese, sorry für den langen Post wäre ...

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address = "$A$1" Then 
    If Len(Target) > 0 Then 
     If Target.Value = Target.Offset(0, 1).Value Then 
      'Run macro 
     End If 
    End If 
End If 

End Sub 
1

Ich nehme Ihr Makro verantwortlich ist A1 der Änderung und/oder B1-Zellen, so dass sie wirklich weiß, wenn das "continuation check" zu tun.

In diesem Fall können Sie das auf vielfältige Weise tun können, sind hier zwei von ihnen:

  • keep "Fortsetzung" Code in Ihrem Makro

    Sub main() 
    
        ' your code till the statement that changes A1 and/or B1 
    
        If Range("A1").Value <> Range("B1").Value Then Exit Sub '<-- if cells A1 and B1 DON'T have the same values then exit sub 
    
        'here follows your code for the "Task" 
    
    End Sub 
    
  • die Aufgabe an einen anderen Sub verlangen

    Sub main() 
    
        ' your code till the statement that changes A1 and/or B1 
    
        If Range("A1").Value = Range("B1").Value Then DoTask '<-- if cells A1 and B1 HAVE the same values then call 'DoTask()' 
    End Sub 
    
    
    Sub DoTask() 
        ' here your code code for the "Task" 
    End Sub 
    

    in diesem letzten Fall möchten Sie vielleicht o übergeben ne (oder mehr) Parameter von „Main“ Makro DoTask

    Sub main() 
    
        ' your code till the statement that changes A1 and/or B1 
    
        If Range("A1").Value = Range("B1").Value Then DoTask Range("A1").Value '<-- if cells A1 and B1 HAVE the same values then call 'DoTask passing A1 cell value as "argument" 
    End Sub 
    
    
    Sub DoTask(val As Variant) '<--| DoTask accepts a parameter declared as of Variant type (but you may choose a more proper one 
        ' here your code code for the "Task" 
        ' it will use 'val' 
    End Sub 
    
+0

@kitarika, bist du durchgekommen? – user3598756

Verwandte Themen