2015-11-05 52 views
2

我需要運行一個宏來決定是運行另一個宏還是保留原來的電子表格。如果activecell.offset(3,0).value是錯誤,則運行SubMac_3。如果沒有錯誤,則保持原樣。如果單元格返回錯誤,則運行宏的宏

Sub SubMacIfError() 
    IfError ActiveCell.Offset(3, 0).Value then 
     SubMac_3 
     SubMac3 
    Else 
     ActiveCell.Select 
    End If 
End Sub 
+0

這聽起來有點矯枉過正,你就不能創建自己的自定義功能該公式用於單元格activecell.offset(3,0)?自定義函數可以完成必要的邏輯,而不是創建處理錯誤的全新宏。 –

+1

'If IsError(ActiveCell.Offset(3,0).Value)Then SubMac3' –

+0

'If IsError(ActiveCell.Offset(3,0).Value)Then Call SubMac_3' – ZygD

回答

2

更新後添加蒂姆威廉姆斯評論(對於這個問題),因爲該代碼行有點乾淨。

Sub SubMacIfError() 

'If Application.WorksheetFunction.IsError(ActiveCell.Offset(3)) Then 
If IsError(ActiveCell.Offset(3).Value) Then 

    SubMac_3 

Else 

    ActiveCell.Select 

End If 

End Sub 

作爲另一個一般的筆記,我就從.SelectActiveCell敬而遠之,除非你絕對需要這一點。

0

如果你想在每一個工作簿工作做到這一點的瞬間一個細胞進行選擇,然後使用此:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
    If IsError(Target(4)) Then SubMac_3 
End Sub 
+0

Chase,是否爲您工作? –