- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2016-4-29 07:06
| 只看該作者
回復 1# EGBT
試試看
ThisWorkbook模組的程式碼- Option Explicit
- Public MSG As String
- '在Workbook任一工作表上按右鍵 "的預設事件
- Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
- Cancel = True '不顯示工作表上按下右鍵所顯示功能表
- EX
- End Sub
- Private Sub EX() ' 更新外部查詢的程式
- Dim Sh As Worksheet, q As QueryTable
- Dim Sh_Table As New Class1 ' Class1 物件類別模組的名稱
- MSG = ""
- For Each Sh In Sheets(Array("Sheet1", "Sheet2", "Sheet3")) '假如我有3個工作表
- 'For Each Sh In Sheets '所有工作表
- If Sh.QueryTables.Count > 0 Then
- For Each q In Sh.QueryTables
- Set Sh_Table.XQueryTable = q '查詢表 設為 物件類別的物件
- q.Refresh False
- Next
- End If
- Next
- If MSG <> "" Then
- MsgBox MSG
- Else
- MsgBox Me.Name & " 沒有外部查詢"
- End If
- End Sub
複製代碼 物件類別模組[Class1]的程式碼- Option Explicit
- Public WithEvents XQueryTable As QueryTable
- Private Sub XQueryTable_AfterRefresh(ByVal Success As Boolean)
- ThisWorkbook.MSG = ThisWorkbook.MSG & IIf(ThisWorkbook.MSG <> "", vbLf, "") & XQueryTable.Parent.Name & "-" & XQueryTable.Name & "更新 " & IIf(Success, "成功", "失敗")
- End Sub
複製代碼 |
|