2015-03-13 66 views
0
運行宏

我只需打開位於進行中,我要更新(因爲它們依賴於間接的在我的工作簿)一些不同的驅動器的一些工作簿的摘要工作簿文件,並在擴展更新所有值(希望)。我已經試過是實現通過開發選項卡和ActiveX控件命令按鈕。然後我用鼠標右鍵單擊該按鈕,「查看代碼」在那裏我簡直是「私人小組CommandButton21_Click」和「結束子」這是我收集意味着「按鈕的名稱」是CommandButton21。對象變量或與塊變量未設置試圖從命令按鈕

我的代碼如下所示:

Private Sub CommandButton21_Click() 
    Dim WbookCheck As Workbook 
    Dim sPath As String, sFile As String 

On Error Resume Next 
    sPath = "C:\Pathtofile" 
    sFile = sPath & "filename.xlsx" 
    Set WbookCheck = Workbooks(sFile) 
On Error GoTo 0 
    If CommandButton21.Value = True Then 
     If WbookCheck Is Nothing Then 'Closed 
      Workbooks.Open Filename:=sFile, ReadOnly:=True 
     ElseIf Application.ActiveWorkbook.Name = WbookCheck.Name Then 
      WbookCheck.Close SaveChanges:=True 
     Else 
      WbookCheck.Activate 
     End If 
    Else 
     WbookCheck.Close True 
    End If 
End Sub 

是否有人有這方面的線索?

+1

乍一看,它看起來像需要在路徑和文件名之間有一個反斜槓。也許更改爲:'SPATH =「C:?!\ Pathtofile \\''這是否幫助 – user3561813 2015-03-13 12:44:56

+0

這有助於在這個項目中,以及在另一個項目中,以便感謝 – Cenderze 2015-03-17 11:36:09

回答

1

我不知道爲什麼你想測試一個命令按鈕的價值,但它會是假,因此試圖關閉這是從來沒有分配將失敗的工作簿變量。你應該跳過Value測試並使用:

Private Sub CommandButton21_Click() 
    Dim WbookCheck As Workbook 
    Dim sPath As String, sFile As String 

On Error Resume Next 
    sPath = "C:\Pathtofile\" 
    sFile = sPath & "filename.xlsx" 
    Set WbookCheck = Workbooks(sFile) 
On Error GoTo 0 

    If WbookCheck Is Nothing Then 'Closed 
     Workbooks.Open Filename:=sFile, ReadOnly:=True 
    ElseIf Application.ActiveWorkbook.Name = WbookCheck.Name Then 
     WbookCheck.Close SaveChanges:=True 
    Else 
     WbookCheck.Activate 
    End If 
End Sub 
+0

感謝對不起,具有響應遲到我已經與其他項目所佔據。這就像一個魅力不過!我本來把代碼從一些網站爲了學習VBA。本來沒有命令按鈕,我相信,而是另一種類型的按鈕,因此無效的比較,我相信了。謝謝您的好意再次! – Cenderze 2015-03-17 11:35:21

相關問題