簡體   English   中英

具有工作表名稱的字符串轉換為數組公式(代碼)

[英]string with sheet names convert to array formula (code)

我有一個公式化的單元格,其中包含一個僅指定要在某些條件下修改某些單元格的工作表的字符串:

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

假設我要修改工作表“總計”,“ Test2”,“ Test7”和“ Test12”中的單元格A5

一個隱藏的公式化單元格(假設為B50)已被公式化以獲取以下文本字符串:“ Array(“ Total”,“ Test2”,“ Test7”,“ Test12”)“。 我將此值分配給一個變量,期望它成為vba代碼的一部分,其中Sheets(SheetNamesList).Select實際上可以是Sheets(Array(“ Total”,“ Test2”,“ Test7”,“ Test12”))。Select

我收到一個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

正確的語法Sheets(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

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

暫無
暫無

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

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