2014-02-28 34 views
0

下面的宏打開一個excel工作簿並在提供的數據上生成一個圖表。我想添加一些錯誤處理,以便在提供與指定名稱(Employee_source_data)名稱不同的Excel工作簿時,會顯示一個消息框,例如請確保提供的電子錶名稱是「Employee_source_data」。任何想法如何做到這一點?提前致謝!向excel宏添加自定義錯誤消息

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 
+1

好吧,很明顯你想達到什麼,但你還沒有告訴我們你到目前爲止嘗試過什麼。沒有人會爲你編寫代碼,你需要證明你已經嘗試了什麼,但什麼不工作:) – 2014-02-28 12:33:44

+0

你好@mehow我已經搞亂了If語句和味精盒,但沒有得到很遠,因爲我是全新的以優秀的編程,這是一個一次性的要求:) –

+0

這個過程很簡單。您需要一個變量來存儲路徑,然後使用'InStr()'或'StrComp()'來驗證另一個字符串是否存在。 – 2014-02-28 12:55:50

回答

1

Dir()函數將派上用場。
試着這麼做

if dir(ThisWorkbook.path & "Employee_source_data*") = "" then 
    msgbox "Please ensure spreadsheet name provided is Employee_source_data" 
end if 

另一種方法是使用FileDialog的控制,如果你在一個情況是它會更容易讓他們選擇它。根據我的經驗,沒有人堅持命名約定而不是強制執行。

+0

非常好的一點,我會看看FileDialog謝謝! –

1
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命令跳轉代碼的行標題WrongWorkbook並給出了您的用戶退出或與MSGBOX勒蒂繼續取消按鈕的機會。然後,如果他們重試它重新啓動與goto啓動子,其他明智它退出

相關問題