首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历工作表,排除一些单元格值并查找。

循环遍历工作表,排除一些单元格值并查找。
EN

Stack Overflow用户
提问于 2022-04-11 08:15:32
回答 2查看 80关注 0票数 1

我有一个Excel工作簿和几个工作表。

我希望宏查看每个工作表的单元格"A1“的值。

如果单元格值小于8,则必须将A1调整为8。

如果单元格值大于8,则无需调整。

我有两个宏:

代码语言:javascript
复制
Sub LoopCertain() 'Excel VBA to exclude sheets(1-3)
Dim sh As Worksheet

For Each sh In Sheets
    Select Case sh.Name
    Case Is = "Blad1", "Blad2", "Blad3"
        'No Code here if excluded
    Case Else
        Call X2
    End Select
Next sh

End Sub

代码语言:javascript
复制
Sub X2()
'declare a variable
Dim ws As Worksheet
Set ws = ActiveSheet

'calculate if a cell is less than a specific value
If ws.Range("A1") < 8 Then
    ws.Range("A1") = 8
Else

End If

End Sub

问题是,只有活动工作表被完成,其余的工作表没有被查看。宏也不检查是否应包括工作表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-11 08:50:46

如果你想用两艘潜艇,请试试下一条路。您的代码只使用第二个子部分中的活动表:

代码语言:javascript
复制
Sub LoopCertain() 'Excel VBA to exclude sheets(1-3)
 Dim sh As Worksheet

 For Each sh In Sheets
    Select Case sh.name
        Case "Blad1", "Blad2", "Blad3"
             'No Code here if excluded
        Case Else
            Call X2(sh)
    End Select
 Next sh
End Sub

Sub X2(ws As Worksheet)
 'calculate if a cell is less than a specific value
  If ws.Range("A1").value < 8 Then ws.Range("A1") = 8
End Sub

但是对于这样简单的处理,不需要第二个处理,因为第一个处理可以完成所有事情:

代码语言:javascript
复制
Sub LoopCertain() 'Excel VBA to exclude sheets(1-3)
 Dim sh As Worksheet

 For Each sh In Sheets
    Select Case sh.name
        Case "Blad1", "Blad2", "Blad3"
             'No Code here if excluded
        Case Else
            If sh.Range("A1").value < 8 Then sh.Range("A1") = 8        
    End Select
 Next sh
End Sub
票数 4
EN

Stack Overflow用户

发布于 2022-04-11 08:55:30

使用当前形式的代码最干净的方法是将工作表对象传递给另一个子对象:

代码语言:javascript
复制
Sub LoopCertain() 'Excel VBA to exclude sheets(1-3)
Dim sh As Worksheet

For Each sh In Sheets
    Select Case sh.Name
    Case Is = "Blad1", "Blad2", "Blad3"
        'No Code here if excluded
    Case Else

        Call X2(sh)

    End Select
Next sh
End Sub

然后

代码语言:javascript
复制
Sub X2(ByVal sh As Worksheet)

    'calculate if a cell is less than a specific value
    If sh.Range("A1") < 8 Then
        sh.Range("A1") = 8
    End If

End Sub

我假设你在现实世界中有理由使用独立的子例程,但是一旦你理解了传递对象的概念,我建议你只在一个例程中这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71824610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档