excel vba中,如何让宏一直处于运行状态。
我先利用数据有效性建了一个下拉列表,然后编辑VBA的代码,设定几个条件语句。即,当满足条件语句时,程序便会执行。以下即是代码:IfRange("A17").Value="...
我先利用数据有效性建了一个下拉列表,然后编辑VBA的代码,设定几个条件语句。
即,当满足条件语句时,程序便会执行。
以下即是代码:
If Range("A17").Value = "Dosol" + " " + "skirts" Then
Range("A18").Value = "hello" + " " + "454," + " " + "makesure" + " " + "iloveyou"
ElseIf Range("A17").Value = "Sky" Then
Range("A18").Value = "good," + " " + "Inow" + " " + "speaking,"
End if
A17就是我设定的下拉列表,而A18,就是我希望他显示出来的值。
很简单的一组条件语句、
现在最大的问题的,我点了之后,他总是没有反应,宏不执行。
就是说我点中了A17下拉列表中的某一项,让其达到固定值的时候,A18并没有跟着起到变化。而只有我点一下执行宏的语句时才会有所改变。
问题是我不想每点一下下拉列表中的值就都要去多点一下宏,请问有什么办法可以解决吗,让宏一直处于执行的状态。我不断的更换下拉列表中的值,而下面的值也就是跟着不断的一起变换。 展开
即,当满足条件语句时,程序便会执行。
以下即是代码:
If Range("A17").Value = "Dosol" + " " + "skirts" Then
Range("A18").Value = "hello" + " " + "454," + " " + "makesure" + " " + "iloveyou"
ElseIf Range("A17").Value = "Sky" Then
Range("A18").Value = "good," + " " + "Inow" + " " + "speaking,"
End if
A17就是我设定的下拉列表,而A18,就是我希望他显示出来的值。
很简单的一组条件语句、
现在最大的问题的,我点了之后,他总是没有反应,宏不执行。
就是说我点中了A17下拉列表中的某一项,让其达到固定值的时候,A18并没有跟着起到变化。而只有我点一下执行宏的语句时才会有所改变。
问题是我不想每点一下下拉列表中的值就都要去多点一下宏,请问有什么办法可以解决吗,让宏一直处于执行的状态。我不断的更换下拉列表中的值,而下面的值也就是跟着不断的一起变换。 展开
5个回答
展开全部
你没有激发事件啊。看看我修改后的代码,只要选择的单元格是A17,就会执行。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target
If .Row = 17 And .Column = 1 Then
If .Value = "Dosol" + " " + "skirts" Then
Range("A18").Value = "hello" + " " + "454," + " " + "makesure" + " " + "iloveyou"
ElseIf .Value = "Sky" Then
Range("A18").Value = "good," + " " + "Inow" + " " + "speaking,"
End If
End If
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target
If .Row = 17 And .Column = 1 Then
If .Value = "Dosol" + " " + "skirts" Then
Range("A18").Value = "hello" + " " + "454," + " " + "makesure" + " " + "iloveyou"
ElseIf .Value = "Sky" Then
Range("A18").Value = "good," + " " + "Inow" + " " + "speaking,"
End If
End If
End With
End Sub
展开全部
你的宏写法不对,文本怎么能相加呢? 如果要连接 也只能用&
如果想要A18单元格因为A17单元格变化而变化,就是需要一个A17单元格的一个触发事件
这个事件是 worksheet_change() 单元格内容改变事件
写法是
private sub worksheet_change(byval target as range)
end sub
如果想要A18单元格因为A17单元格变化而变化,就是需要一个A17单元格的一个触发事件
这个事件是 worksheet_change() 单元格内容改变事件
写法是
private sub worksheet_change(byval target as range)
end sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是在A18中输入公式吧。。。。。
=IF(A17="Dosol skirts","hello 454 makesure iloveyou",IF(A17="sky","good Inow speaking,",""))
=IF(A17="Dosol skirts","hello 454 makesure iloveyou",IF(A17="sky","good Inow speaking,",""))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把代码放到 worksheet 的 change 模块里面,应该就可以触发了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的描述,可以断定你的代码不是写在单元格事件中。
你的代码应该放到单元格事件中去。当单元格发生变化时运行宏。 HI我,帮你搞定
你的代码应该放到单元格事件中去。当单元格发生变化时运行宏。 HI我,帮你搞定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询