2016-05-12 3 views
0

Ich habe den folgenden VBA-Code:interne Blattnamen als Variable basierend auf einer Eingabe in Excel-Zelle

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

Value in cell A1 = B2:B3 

Der Code perfekt bisher funktioniert. Jetzt möchte ich den "Sheet2" -Teil als eine Variable auf die gleiche Weise wie für den Bereich machen. Ich möchte den internen Blattnamen in eine Excel-Zelle schreiben, um sie variabel zu machen. Ich habe den folgenden Weg bisher versucht, aber es hat nicht funktioniert.

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 

Haben Sie eine Idee, wie ich dieses Problem lösen kann?

Vielen Dank für jede Hilfe im Voraus.

+0

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

Antwort

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

EDIT

Wenn Sie das Sheetname unter dem Codenamen eingeben, verwenden Sie eine Funktion wie diese zurückzukehren, um die richtige Blattnamen erhalten möchten:

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 

Dann sind Sie kann dies wie Sheets(getSheet("CODENAME")).Select

-1

versuchen wi th Code unten

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

EDIT - 1

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

Hallo Karthick, danke für deine Antwort. Das einzige Problem ist, dass ich auf den Namen des internen Blattes in VBA verweisen möchte und nicht auf den Namen, den es in der Excel-Frontend-Ansicht hat. Wenn ich beispielsweise Sheet2 in "Input" umbenenne, läuft der Code nicht mehr. Der interne Blattname würde Sheet2 bleiben; Daher möchte ich den internen Namen in meinem Code verwenden. Hast du eine Idee, wie du das lösen kannst? siehe – Michi

+0

pls die bearbeitete Post –

+0

HALLO Karthick, ich habe den Code wie folgt geändert, aber es funktioniert nicht :-(Sub Test() Dim Variable As String Variable = Sheet1.Range ("A1"). Value variable2 = Sheet2.Range ("A2"). Wert Sheets (Val (Ersetzen (Variable2, "Sheet", ""))). Wählen Bereich (Variable). Wählen End Sub – Michi

Verwandte Themen