簡體   English   中英

Excel VBA在無效的工作表上獲取表范圍

[英]Excel VBA get table range on unactive worksheet

我不知道為什么這個說法行不通。

Rng = Worksheets(sheetName).ListObjects(table).Range.Select

我有一個帶有一個按鈕的工作表“ sheetX”,該按鈕在全局工作區“ Thisworkbook”中調用子過程“ export_json”。 我希望“ Thisworkbook”中的子進程引用“ A2”處“ sheetX”上的表范圍,但它給出錯誤“應用程序定義或對象定義的錯誤”。 我不想使用Application.Goto

這是為什么? 我忽略了一些基本的東西

Public Sub CommandButton1_Click()
    sheet = ActiveSheet.Name
    Call ThisWorkbook.export_json(sheet)
End Sub

Public Sub export_json(sheetName)
    table = ThisWorkbook.get_table(Worksheets(sheetName).Range("A2"))
    Rng = Worksheets(sheetName).ListObjects(table).Range.Select
    Rng = Selection.Address

table是字符串類型,而sheet是字符串類型的正確工作表名稱,因此這不是問題。

您的語法看起來有些Rng ,當您嘗試在函數export_json()聲明Rng ,應將其作為字符串傳遞。

Public Sub CommandButton1_Click()

    Dim sheetX As String
    sheetX = ActiveSheet.Name
    Call export_json("sheetX")

End Sub

Private Function export_json(sheetName As String)

    table = ThisWorkbook.get_table(Worksheets(sheetName).Range("A2"))
    Worksheets(sheetName).ListObjects(table).Range.Select

End Function

嘗試下面的代碼,無需使用Select

另外,我不清楚為什么將Function的代碼保留在ThisWorkbook模塊中,而不是在常規模塊中。

Public Sub CommandButton1_Click()

    Dim TableRangeString As String

    TableRangeString = ThisWorkbook.export_json(ActiveSheet.Name)

    ' for debug
    MsgBox TableRangeString

End Sub

Public Function export_json(sheetName) As String
    ' use the function to return the Range.Address by changing it to return a String

    Dim Rng As Range

    Set Rng = Worksheets(sheetName).Range("A2").ListObject.Range
    export_json = Rng.Address

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM