2017-02-10 49 views
2

下面的子RangeSelectionPrompt讓用戶選擇一個範圍的單元格。 下面的代碼只適用於此代碼在Excel文件上。vba讓用戶從ms訪問工作表中選擇一個範圍

我想知道在MSAccess中執行此代碼。我想捕捉用戶選擇的範圍並進行數據操作。 它可能或我吸菸很多。

從Access我知道如何午餐Excel,檢測有多少WBK打開,瀏覽工作簿,... 表格Excel我知道如何創建一個加載項,連接到數據庫並傳輸數據用戶選擇後,但這不是我想要的。

Sub RangeSelectionPrompt() 
    Dim rng As Range 
    Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8) 

    MsgBox "The cells selected were " & rng.Address 
End Sub 
+4

你需要創建一個'Excel.Application',然後調用'.InputBox'上。 – Comintern

+0

試過但沒成功。我會在今晚把代碼放在家裏。 –

+0

修好了!該錯誤是設置xlWB = xlApp.ActiveWorkbook.ActiveSheet.Select。請參閱下面的完整代碼。感謝共產國際 –

回答

2

解決的問題

Option Compare Database 

Option Explicit 
Dim xlApp As Excel.Application 
Dim xlWB As Excel.Workbook 
Dim rng As Range 


Sub GetUserSelection() 
    On Error GoTo ErrExcelinstance 

    Set xlApp = GetObject(, "Excel.Application") 
    Set xlWB = xlApp.ActiveWorkbook    ' the bug was Set xlWB = xlApp.ActiveWorkbook.ActiveSheet.Select 

    RangeSelectionPrompt 

    Exit Sub 

ErrExcelinstance: 


    Select Case Err.Number 

    Case 429 

     Err.Clear 
     MsgBox "No Workbook Open" 
     Set xlApp = Nothing 
     Set xlWB = Nothing 


    Case Else 

     Set xlApp = Nothing 
     Set xlWB = Nothing 
     MsgBox Err.Number & " " & Err.Description 
     Err.Clear 

    End Select 

End Sub 


Sub RangeSelectionPrompt() 
    On Error GoTo RangeSelectionPrompterr: 

    Set rng = xlApp.InputBox("Select a range", "Obtain Range Object", Type:=8) 

    MsgBox "The cells selected were " & rng.Address 

    Exit Sub 

RangeSelectionPrompterr: 


    Select Case Err.Number 



    Case 424 

     Err.Clear 
     MsgBox "User did not perform selection" 
     Set xlApp = Nothing 
     Set xlWB = Nothing 


    Case Else 



     Set rng = Nothing 
     MsgBox Err.Number & " " & Err.Description 
     Err.Clear 

    End Select 


End Sub 
相關問題