我正在寻找一些协助如何根据单元格的价值触发宏的延续。
我希望的是,当单元格A1 =单元格B1时,我需要它来执行任务,否则结束脚本。
我认为这是一个简单的If... Then
脚本?非常感谢任何帮助!
答案 0 :(得分:1)
这是可以做到的一种方式,这是假设你的所有价值已经存在并且你正在运行支票,而不是有人在现场打字,在这种情况下John会是一个很好的方式。然而,我不喜欢workheet_change的一件事是,一旦宏被执行,你就无法点击撤销。我添加了如果长度> 0,好像你有两个空单元格,它仍会触发。
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
*编辑 - 我想我没有完全正确地阅读它。出于某种原因,我认为你需要经历一系列的价值观。要完全按照你要求做的事情就更像是这样了,对不起,长篇大论......
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 :(得分:1)
我假设您的宏负责更改A1和/或B1单元格,以便它真正知道何时执行“继续检查”。
在这种情况下,您可以通过多种方式完成此操作,其中有两种方式:
在宏中保留“延续”代码
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
要求将任务转移到另一个Sub
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
在后一种情况下,您可能希望将一个(或多个)参数从“Main”宏传递到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