Vba 将自定义错误消息添加到excel宏
下面的宏将打开excel工作簿,并根据提供的数据生成图表。我想添加一些错误处理,以便在提供与指定工作簿(员工源数据)名称不同的excel工作簿时,会显示一个消息框,例如,请确保提供的电子表格名称为“员工源数据”。有没有办法做到这一点?提前谢谢Vba 将自定义错误消息添加到excel宏,vba,excel,excel-2007,Vba,Excel,Excel 2007,下面的宏将打开excel工作簿,并根据提供的数据生成图表。我想添加一些错误处理,以便在提供与指定工作簿(员工源数据)名称不同的excel工作簿时,会显示一个消息框,例如,请确保提供的电子表格名称为“员工源数据”。有没有办法做到这一点?提前谢谢 Sub GenerateEmployeeReport() Workbooks.Open Filename:=ThisWorkbook.Path & "\Employee_source_data" Range("E2").Selec
Sub GenerateEmployeeReport()
Workbooks.Open Filename:=ThisWorkbook.Path & "\Employee_source_data"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
Selection.AutoFill Destination:=Range("E2:E7"), Type:=xlFillDefault
Range("E2:E7").Select
Range("A1:A7,E1:E7").Select
Range("E1").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range( _
"'Sheet2'!$A$1:$A$7,'Sheet2'!$E$1:$E$7")
ActiveChart.ChartType = xl3DColumnClustered
End Sub
Dir()函数将派上用场。试试像这样的东西
if dir(ThisWorkbook.path & "Employee_source_data*") = "" then
msgbox "Please ensure spreadsheet name provided is Employee_source_data"
end if
另一种选择是使用FileDialog控件,如果您处于更容易让他们选择它的情况下。根据我的经验,没有人坚持命名约定,除非它被强制执行
Sub GenerateEmployeeReport()
Dim strWorkbookName As String
Dim Answer As String
Start:
strWorkbookName = InputBox("Enter Workbook", "Open Workbook")
On Error GoTo BadWorkbook
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & strWorkbookName
Range("E2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
Selection.AutoFill Destination:=Range("E2:E7"), Type:=xlFillDefault
Range("E2:E7").Select
Range("A1:A7,E1:E7").Select
Range("E1").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range( _
"'Sheet2'!$A$1:$A$7,'Sheet2'!$E$1:$E$7")
ActiveChart.ChartType = xl3DColumnClustered
Exit Sub
BadWorkbook:
Answer = MsgBox("Please ensure spreadsheet name provided is Employee_source_data", vbRetryCancel)
If Answer = 4 Then
GoTo Start
Else: Exit Sub
End If
End Sub
goto命令将代码跳转到行标题
错误工作簿
,并使用msgbox rety cancel按钮为用户提供退出或继续的机会。然后,如果他们重试,用goto start重新启动sub,否则它会退出好的,很好,很清楚您想要实现什么,但您还没有告诉我们您到目前为止尝试了什么。没有人会为您编写代码,您需要演示您尝试过的内容和不起作用的内容:)Hello@mehow我曾尝试过If语句和消息框,但并未取得太大进展,因为我对excel编程完全陌生,这是一次性要求:)过程非常简单。您需要一个变量来存储路径,然后使用InStr()
或StrComp()
来验证一个字符串是否存在于另一个字符串中。如果您正在硬编码该值,则应打开该工作簿。您不必测试它。如果找不到该工作簿,excel将给出一个错误,它不会打开另一个工作簿。谢谢@user2140261,我只想为用户提供一条友好的消息,以防提供错误的工作簿,而不是运行时错误。