我需要从另一个宏调用一个宏,我正在使用'call'方式。我不明白为什么它不能正常工作,除非你在调用行中放置一个断点。
请参阅。我有这个:
Sub actualizarDatos()
Sheets("DATOS CITAS").Select
Range("A1").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
ActiveWorkbook.RefreshAll
Call replaceColumns
Sheets("Resumen").Activate
End Sub
第一部分是这样写的,因为我在使用大张纸时遇到了一些问题。它让我的优秀停止了。
我正在调用的宏看起来像这样:
Sub replaceColumns()
With ThisWorkbook.Sheets("RFS")
.Columns("A").Replace _
What:="2", Replacement:="2", _
SearchOrder:=xlByColumns, MatchCase:=True
End With
End Sub
为什么我需要第二个宏?由于具有公式的列未自动更新,因此此宏“修改”公式中使用的单元格。
但是,让我们来看看重要部分和主要问题:
为什么呼叫部分不起作用? - 如果我执行RFS表中的第一个宏(第二个宏中的表单),它可以工作!但我必须从另一张纸上的按钮更新它,所以它不是答案。 - 如果我放置一个断点并从随机表中执行第一个宏,它就可以了。
我也直接尝试使用宏名称,而不是使用“调用”。不工作。甚至直接在写入调用行的第一个宏内写宏内容,它也不起作用!! 由于某种原因,它错过了那条线。有谁知道为什么?
谢谢!
[编辑]
解决
我必须在我的表配置中做一些事情。如果有人在刷新时遇到同样的问题,那就到下一个:
对于每个表格,您将在RefreshAll中刷新,选择它并转到顶部菜单中的“设计”。现在转到属性并取消选中“启用后台刷新”复选框。 这是它的外观:
答案 0 :(得分:1)
你有没有尝试制作Sub Public。像:
#If VBA7 Then
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
此外,对于第一个过程,请尝试放置“睡眠”命令以确保等到Excel完成刷新。
omf
并将此代码放在模块的顶部:
{{1}}