提问人:celia_123 提问时间:11/15/2023 更新时间:11/15/2023 访问量:43
Excel VBA:使用单元格值引用另一个工作表
Excel VBA: referencing another worksheet using a cell value
问:
因此,我想在不键入“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")
答:
2赞
VBasic2008
11/15/2023
#1
循环访问一行工作表名称
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
下一个:FIx 工作表循环
评论
Set SheetWork = Sheets(SheetNameString)