2016-05-12 59 views
0

我有以下VBA代码:内部表名称为变量在Excel细胞基于输入

Sub test() 
    Dim Variable As String 
    Variable = Sheet1.Range("A1").Value 
    Sheet2.Select 
    Range(Variable).Select 
    End Sub 

Value in cell A1 = B2:B3 

代码工作完全为止。现在我想以与我为范围相同的方式将“Sheet2”部分作为变量。我想将内部工作表名称写入一个excel单元格以使其可变。到目前为止,我尝试了以下方法,但没有奏效。

Sub test() 
    Dim Variable As String 
    Variable = Sheet1.Range("A1").Value 
    Variable2 = Sheet1.Range("A2").Value 
    Variable2.Select 
    Range(Variable).Select 
    End Sub 

Value in cell A1 = B2:B3 
Value in cell A2 = Sheet2 

你有什么想法我可以解决这个问题吗?

感谢您提前提供任何帮助。

+0

https://msdn.microsoft.com/en-us/library/office/aa221568%28v=office.11​​%29.aspx ?f = 255&MSPPError = -2147217396 –

回答

1
Sheets(Variable2).Range(Variable).Select 

编辑

如果你想通过输入代号拿到SHEETNAME,使用这样的函数返回正确的表名称:

Function getSheet(codename_ As String) As String 
'returns the Sheet name corresponding to the Codename 
Dim ws As Worksheet 

For Each ws In Worksheets 

    If ws.codename = codename_ Then 

     getSheet = ws.Name 
     Exit Function 
    End If 
Next ws 
End Function 

然后你可以用这个像Sheets(getSheet("CODENAME")).Select

-1

试试wi TH以下代码

Sub test() 
    Dim Variable As String 
    Variable = Sheet1.Range("A1").Value 
    Variable2 = Sheet1.Range("A2").Value 
    Worksheets(Variable2).Select 
    Range(Variable).Select 
End Sub 

编辑 - 1

Sheets(Val(Replace(variable2, "Sheet", ""))).Select 
+0

嗨Karthick,谢谢你的回答。唯一的问题是我想引用vba中的INTERNAL表名,而不是它在excel前端视图中的名称。例如,当我将Sheet2重命名为“Input”时,您的代码不再运行。内部工作表名称将保留Sheet2;因此,我想在我的代码中使用内部名称。你有什么想法如何解决这个问题? – Michi

+0

请参阅编辑后 –

+0

HI Karthick,我已将代码更改为以下,但它不起作用:-(Sub test() Dim Variable As String Variable = Sheet1.Range(“A1”)。Value variable2 = Sheet2.Range(“A2”)。Value 表(Val(Replace(variable2,“Sheet”,“”)))。Select Range(Variable).Select End Sub – Michi