2013-07-31 30 views
0

它說我有太少的參數預計15 ...這是我刷新前後的東西。在另一個工作簿中引用單元格。如果值相同,則使我的查詢不刷新

1個

Public WithEvents qt As QueryTable 


Private Sub qt_AfterRefresh(ByVal Success As Boolean) 

    Application.Worksheets("RawDataLines").Range("A1") = Application.Worksheets("RawDataLines").Range("C1") 
    Application.Run "'Operation Get Ipads.xls'!Assembly1_Button" 


End Sub 

2級

Public WithEvents qut As QueryTable 

Private Sub qut_BeforeRefresh(Cancel As Boolean) 
    Worksheets("RawDataLines").Range("C1") = _ 
     "='H:\Departments\Manufacturing\Production Links\DashBoard Breakdown\[MASTER_LIVE_STATUS_DATA.xls]Sheet1'!R1C1" 
    If Application.Worksheets("RawDataLines").Range("C1") = Application.Worksheets("RawDataLines").Range("A1") Then 
    Cancel = True 
    End If 

End Sub 

初始化:

Dim T As New Class1 
Dim H As New Class2 



Sub Initialize_It() 
    Set T.qt = ThisWorkbook.Sheets(3).QueryTables(1) 
    Set H.qut = ThisWorkbook.Sheets(3).QueryTables(1) 
End Sub 
+0

哦,並且運行刷新時「MASTER」工作簿不會打開。我需要明確引用該工作簿。我不知道我是否必須將文件的位置放在那裏,以便做到這一點或需要什麼。 – Pike7893

+0

「我不積極,這將起作用。」當你嘗試時會發生什麼? (在嘗試之前,你不能肯定) –

+0

它不起作用。我不知道這是否是我的參考,或者如果我正在討論這個錯誤 – Pike7893

回答

2
Private Sub qt_BeforeRefresh(ByVal Success As Boolean) 

參數通常是Cancel,這是你的代碼指的是什麼。將其更改爲Cancel

您可以參考當前工作簿(此代碼正在運行的位置)爲ThisWorkbook。假設它是主之一,那麼你可以使用:

ThisWorkbook.Worksheets("sheet1").Range("A1") 

Workbooks收集僅指打開的工作簿,所以你需要暫時打開其他工作簿:

Dim wbOther As Workbook 

Set wbOther = Workbooks.Open("full path and filename.xlsx", False) 

False參數指示您在打開書時不希望Update Links(如果適用)。

當你與其他書完成後,使用方法:

wb.Close False 'False says that you do not need to Save Changes 
Set wb = Nothing 

有可能得到另一個工作簿的單一值而無需打開和關閉它,但如果這本書也有聯繫這可能會導致問題:

Debug.Print ExecuteExcel4Macro("'F:\Documents and Settings\student\My Documents\[AndysData7.xlsx]Staff List'!R6C4") 

注意,公式需要使用R1C1表示法。 (而不是Debug.Print,您可以將該值存儲在變量中。)還要注意,我不一定會推薦這種方法,因爲它沒有記錄,但我想我會在問題的上下文中提及它。

+0

謝謝我正在做類似您帖子中最後一項的內容。現在這部分工作正常。我仍然有太少的參數,並且不認爲我正確地設置了我的刷新子前後。我創建了兩個類模塊來嘗試並使其工作。仍然不會。我將在我的問題中編輯我的代碼,以顯示我現在擁有的。 – Pike7893

+1

有一個(簡短的和舊的)指南[這裏](http://support.microsoft.com/kb/213187)。你正在設置qt和qut到相同的查詢表,這聽起來不對。一個常見的問題是不把代碼放在正確的模塊中。提示:從一個簡單的MsgBox開始,證明事件觸發正常;) –

+0

由於「太少參數」錯誤,暫時取消您的代碼並確保qt仍在更新。 –

相關問題