2017-02-10 44 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 
相关问题