Excel VBA:使用单元格值引用另一个工作表

问题描述 投票:0回答:1

所以我想获取不同工作表(假设为 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")
excel vba worksheet
1个回答
0
投票

循环一行工作表名称

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
© www.soinside.com 2019 - 2024. All rights reserved.