2013-10-23 28 views
1

我有一個包含一個字符串,指定只有在我想修改在特定條件下的某些細胞中的工作表配製的細胞:字符串片名稱轉換爲陣列式(代碼)

注: 工作表「總計」,和「Test1」到「Test20」具有相同的格式(我有更多不同名稱和格式的工作表,我根本不想修改)。

比方說,我想修改單元格A5在工作表中「合計」,「Test2的」,「TEST7」和「TEST12」

隱藏制定細胞(假設B50)已經制定得到以下文本字符串:「Array(」Total「,」Test2「,」Test7「,」Test12「)」。我將這個值賦給一個變量,期望它成爲Sheets(SheetNamesList).Select實際上可以是Sheets(Array(「Total」,「Test2」,「Test7」,「Test12」))的vba代碼的一部分。

我得到一個Suscript超出範圍錯誤和行[Sheets(SheetNamesList).Select]在調試時突出顯示。

以下是我的代碼。謝謝您的意見

Sub Active_to_Installed() 

Dim SheetNamesList As String 

SheetNamesList = Sheets("Names").Range("B50").Value 

If Range("B50").Value = "A" Then 

Range("B50").Activate 
Sheets(SheetNamesList).Select 
ActiveSheet.Activate 
Range("A5").Select 
ActiveCell.FormulaR1C1 = "I" 

Else 

Range("A5").Activate 
Sheets(SheetNamesList).Select 
ActiveSheet.Activate 
Range("A5").Select 
ActiveCell.FormulaR1C1 = "A" 

End If 
End sub 
+0

是什麼時候發生錯誤'SheetNamesList'的價值?在Locals窗口中選中此項,或在Immediate窗口中寫入'SheetNamesList'。 –

+0

+1爲了讓我學到新東西。謝謝。 – Harrison

回答

0

正確syntaxSheets(Array("Sheet4", "Sheet5")).Select,但您使用的是電池是最有可能的一個字符串的值。你需要的是字符串轉換成的Sheets

Dim SheetNameArray As Variant 
Dim Counter As Integer 

SheetNameArray = Split(Worksheets("Names").Range("B50").Value, ",") 
Sheets(SheetNameArray).Select 

數組我其實從來沒有在同一時間選擇多個工作表,你就不能有多個活動表,所以你不能激活。你也不能一次在這裏改變所有人的公式。所以要做到這一點,您需要按照以下步驟遍歷表單。

Dim SheetNameArray As Variant 
Dim Counter As Integer 

SheetNameArray = Split(Worksheets("Names").Range("B50").Value, ",") 
For Each s In SheetNameArray 
    Worksheets(s).Range("A5").Formula = "=2+3" 
Next s 

Sheets(SheetNameArray).Select 

注意:您將需要從Array("Total", "Test2", "Test7", "Test12")在B50的值更改爲Total, Test2, Test7, Test12

+0

@igornachov,這對你有幫助嗎? – Harrison