excel - Excel VBA 对于范围内的每个单元格似乎多次通过同一个单元格
问题描述
“for-each cell in range”语句似乎多次通过同一个单元格。
请参阅屏幕截图。
它四次遍历具有单词“Product”的单元格,因为它被合并到四行。
有没有办法让它只运行一次,而不管工作表的设计如何(换句话说,我不喜欢使用它在编码时考虑到它在四行中合并的事实)。
Public Sub ProcessBeijingFile(Excel_UNC_Path As String)
Dim src As Workbook
Dim ProdPushWorkbook As Workbook
Set ProdPushWorkbook = ActiveWorkbook
Set src = Workbooks.Open(Excel_UNC_Path, True, True)
Dim c As Range
Dim r As Range
Dim LastRow As Long
Dim text As String
src.Sheets("Page 1").Activate
src.ActiveSheet.Range("A1").Select
LastRow = src.ActiveSheet.Range("A30000").End(xlUp).Row
text = LastRow
text = "A2:BA" + CStr(text)
Set r = Range(text)
Dim i As Integer
For i = 1 To MaxItems
PONumber(i) = ""
Next
Dim PageCounter As Integer
PageCounter = 0
RecordCounter = 0
Dim NextPONumber As String
NextPONumber = ""
For Each c In r
If Left(Trim(c.Value), 5) = "PO No" Then
NextPONumber = Trim(Replace(c.Value, "PO No.:", ""))
NextPONumber = Trim(Replace(NextPONumber, "PO No:", ""))
End If
....
解决方案
如果您不关心性能并且只想要简单的代码,下面将演示如何跳过 MergedCells。它在立即窗口中显示单元格 B1 中非空单元格的地址和值,直到到达空单元格。你需要的那种。
Option Explicit
Sub Sample()
Dim oRng As Range
Set oRng = Range("B1")
Do Until IsEmpty(oRng)
Debug.Print oRng.Address, oRng.Value
Set oRng = oRng.Offset(1)
Loop
Set oRng = Nothing
End Sub
推荐阅读
- django - django-celery-beat 意外中断 django
- .net-core - 使用带有 .NetCore 的 Google OAuth 2.0 登录
- python - 如何将周期位数四舍五入?
- haskell - 镜头修改失败
- css - 我可以在不知道高度的情况下响应性地将 ::before 元素添加到它的父元素的顶部吗
- node.js - 尝试将页面添加到我的项目时,我在命令提示符下收到此错误 500
- php - 水平和动态连接表
- kotlin - 在 Kotlin 的换行符处打开花括号
- c# - 匹配整行的多行模式在 python 中有效,但在 C# 中无效
- c# - 在 IAsyncEnumerable 中让步的替代方法