我有一组数百张布局相同的工作表,但每张工作表包含不同的数据。我想列出所有工作表,例如单元格 E532=1 或 E532>0。这能做到吗?如果可以,怎么做?如果有帮助,我已经安装了 Kutools。
非常感谢。
答案1
尝试一下:
Sub LookFor()
Dim msg As String, addy As String, v As Variant
Dim w As Worksheet
msg = ""
addy = Application.InputBox(Prompt:="enter cell address", Type:=2)
v = Application.InputBox(Prompt:="enter cell value", Type:=3)
For Each w In Worksheets
If w.Range(addy) = v Then
msg = msg & vbCrLf & w.Name
End If
Next
If msg = "" Then
MsgBox "nothing found"
Else
MsgBox msg
End If
End Sub
答案2
以下 VBA 子过程将识别活动工作簿中单元格 E532 中包含大于 0 的值的工作表的名称。工作表的名称将输出到即时窗口。此外,工作表选项卡的颜色将更改为黄色。
Sub ListWorksheets()
For Each ws In Worksheets
TestValue = ws.Range("E532").Value
If (TestValue > 0) Then
Debug.Print ws.Name
ws.Tab.ColorIndex = 6
End If
Next ws
End Sub
为了创建符合条件的工作表列表,请创建一个新工作表并运行以下宏。工作表列表将从运行宏时处于活动状态的单元格开始输出。
Sub ListWorksheetsAtActiveColumn()
'Defines the row offset of the current cell to list the worksheets
Dim RowNumber As Long
RowNumber = 0
For Each ws In Worksheets
TestValue = ws.Range("E532").Value
If (TestValue > 0) Then
Debug.Print ws.Name
'Changes the color of the worksheet tab to yellow
ws.Tab.ColorIndex = 6
'Creates a list of worksheet names that meet the test starting
'at the current cell
ActiveCell.Offset(RowNumber, 0).Value = ws.Name
RowNumber = RowNumber + 1
End If
Next ws
End Sub