所以我想获取不同工作表(假设为 Wrksheet2)中单元格的值,而无需输入“Wrksheet2”。它已经是我的主工作表 (Wrksheet1) 上的字符串值。我想用几个不同的工作表来执行此操作,因为我有一整行工作表名称。
以下是我想做的事情
Dim SheetNameString as String
Dim SheetWork as Worksheet
Dim i as Integer
for i = 3 to 15
SheetNameString = cells(3,i)
SheetWork = Sheets(SheetNameString)
If SheetWork.cells(i+4, 8) = blah Then
Blah blah
End If
Next
因此当前工作表 Wrksheet1 第 3 行是我的工作簿中的一行工作表名称。我想迭代这一行,逐个单元格(工作表名称按工作表名称),然后访问该工作表以使用该工作表中的值执行 If 语句(例如 Sheets("Wrksheet2").cells (1,1) ).
我试图避免做的是输入每个工作表名称,因为我有〜45。
我不确定如何将单元格值(字符串)输入到 Sheets("") 中。以下均不起作用:
Dim SheetNameString as String
Dim SheetWork as Worksheet
SheetNameString = cells(3,3)
SheetWork = Sheets(SheetNameString)
或
Dim SheetNameString as String
Dim SheetWork as Worksheet
SheetNameString = cells(3,3)
SheetWork = Sheets("SheetNameString")
Sub LoopThroughRow()
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Sheets("Master")
Dim srg As Range, scCount As Long
With sws.Range("C3")
scCount = sws.Cells(.Row, sws.Columns.Count).End(xlToLeft).Column _
- .Column + 1
If scCount < 1 Then
MsgBox "No worksheet names found!", vbExclamation
Exit Sub
End If
Set srg = .Resize(, scCount)
End With
Dim dws As Worksheet, scell As Range, dwsName As String
For Each scell In srg.Cells
dwsName = CStr(scell.Value)
On Error Resume Next
Set dws = wb.Sheets(dwsName)
On Error GoTo 0
If dws Is Nothing Then
MsgBox "Worksheet """ & dwsName & """ not found!", vbExclamation
Else
' Do your 'Blah' code here e.g.:
MsgBox "Processing worksheet """ & dwsName & """.", vbInformation
Set dws = Nothing ' reset for the next iteration (worksheet)
End If
Next scell
End Sub