在我的刷新数据宏的末尾添加If / Else条件

时间:2015-04-19 12:32:55

标签: excel excel-vba vba

我有一个宏,它是从我工作簿的第1页上的按钮生成的。当宏运行时,它从我的工作簿中删除密码保护,刷新与另一个工作簿的数据链接(宏将用户带到目录路径,但用户必须突出显示工作簿,然后选择确定),宏然后通过放置密码完成保护我的工作簿。

只要用户突出显示工作簿并选择“确定”,这就可以正常工作。如果用户决定选择取消,宏将无法完成。

如果用户选择取消而不是突出显示工作簿并选择确定,是否存在可写入宏的If / Else条件以避免调试窗口。宏没有If / Else元素,效果很好。

Sub RefreshData()
'
'RefreshData Macro
'Unprotect, Refresh Data, Protect
'
  Application.ScreenUpdating = False

  With Sheet4
  .Protect Password:="password", UserInterfaceOnly: = True

  ThisWorkbook.UpdateLink Name:=ThisWorkbook.LinkSources

  If ......... = False Then
  ' Cancel was selected and Data Not Refreshed
  Else
  ' OK was selected and Data Refreshed
  End If

  End With

End Sub

1 个答案:

答案 0 :(得分:0)

使用GetOpenFilename找到路径和文件。如果取消对话框,通常包含完整路径和文件名的字符串将变为一个字符串,表示" False"

Dim fn As String
fn = Application.GetOpenFilename(FileFilter:="Excel Files (*.xl*), *.xl*", _
  Title:="Select a workbook to update from")
If fn = "False" Then
    MsgBox "Stopping because you did not select a file"
Else
    ' fn contains the full path and filename. e.g. c:\temp\MyWorkBook.xlsx
    ' wait until you get here before you unprotect the workbook
    Debug.Print CStr(fn)
    ' do the update
    ' reprotect the workbook
End If

这与布尔值 False 不同。它有点与众不同,但以上是我发现处理它的最佳方式。