繁体   English   中英

VBA - Excel 通过一列中每一行的宏

[英]VBA - Excel through macros for each row in a column

我正在开发一种工具,它可以让我调用大约 15 个潜艇从一个单元格中获取文本,分析它,然后为它生成一个字母。 现在我没有过多地使用循环,但我想看看我对此的想法是否正确,或者是否有关于如何使它变得更好的建议:

    Sub Loop_Process()
Dim myrange as string
myrange = Cells(Rows.Count, 1).End(xlUp).Address

For each i in Range(myrange).Rows
Call Macro 1
Call Macro 2
'etc

Next i
End sub

这会影响整个列表吗? 您能想到的任何主要陷阱? 我需要弄清楚的另一件事是,它使用正在运行宏的单元格的内容作为标题保存 PDF,如果保存 PDF 宏在循环内,我怎么能让它引用单元格。 那有意义吗? 感谢您的帮助

你说你想从你引用的每个单元格中获取文本,并在你的 15 个其他过程中使用它。

正如@BigBen 所说-您需要引用范围的开始和结束单元格。 目前你只是在看最后一个单元格。

此代码将 go 通过范围内的每个单元格并将其传递给宏。 它还演示了有助于简化代码语法的With...End With代码块。

Public Sub Test()

    Dim myRange As Range
    
    'Always be specific which workbook and sheet your range is on.
    'The overall range and the start/end cells are fully qualified:
    'Set myRange = ThisWorkbook.Worksheets("Sheet1").Range( _
    '                 ThisWorkbook.Worksheets("Sheet1").Cells(1, 1), _
    '                 ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp))
                  
    'The above row shortened using the With...End With block.
    With ThisWorkbook.Worksheets("Sheet1")
        Set myRange = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
    
    Dim myCell As Range
    For Each myCell In myRange.Cells
        Macro1 myCell 'Pass the cell reference to the Macro1 procedure.
    Next myCell
    
End Sub

Public Sub Macro1(CellRef As Range)

    With CellRef
        MsgBox "Row:  " & .Row & vbCr & _
               "Col:" & Split(.Address, "$")(1) & vbCr & _
               "Val: " & .Value
    End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM