【发布时间】:2023-03-17 22:26:02
【问题描述】:
这是问题Do Until IsEmpty to loop through the user-defined ranges的延续:
在下面的代码中,excel 宏循环遍历原始文本范围,将“标记名”的所有实例替换为单元格 D2 中分配的 loopText,并将更正后的文本放入单元格 B9。然后它检查 looptext 范围是否有其他值并再次遍历原始文本以解决这些问题。一旦 looptext 单元格为空,宏就会停止并打印每个 loopText 实例的更正文本。 与替换 D2 及以后单元格中的“标记名”平行,我希望宏将“工作表名”一词替换为 E2 及以后的单元格范围。 我创建了一个单独的 Do Until IsEmpty 循环,但是 excel 只执行第一个循环。
请帮助找出我的 VB 代码中的错误。
谢谢。
Sub CommandButton21_Click()
Dim correctedText2 As Range
Dim OriginalText2 As Range
Dim loopText1 As Range
Dim loopText2 As Range
Dim cel As Range
Dim i As Long
Dim j As Long
Dim k As Long
Set OriginalText2 = Range("H3:H20")
Set correctedText2 = Range("B9")
Set loopText1 = Range("D2")
Set loopText2 = Range("E2")
i = 0
j = 0
Do Until IsEmpty(loopText1.Offset(j).Value)
For Each cel In OriginalText2
correctedText2.Offset(i).Value = Replace(cel.Value, "tagname", loopText1.Offset(j).Value)
i = i + 1
Next cel
j = j + 1
Loop
k = 0
Do Until IsEmpty(loopText2.Offset(k).Value)
For Each cel In OriginalText2
correctedText2.Offset(i).Value = Replace(cel.Value, "sheetname", loopText2.Offset(k).Value)
i = i + 1
Next cel
k = k + 1
Loop
End Sub
【问题讨论】:
-
在第二个循环开始之前检查 loopText2.Offset(k).Value 的值
-
不明白你在做什么,但你确定要在两个循环中使用
correctedText2? -
@findwindow 我相信这可能会导致问题,只执行第一个循环。但是,correctedText 是 originalText 的相同修改。我只是想通过分别用单元格范围 loopText1 和 loopText2 替换单词“tagname”和“sheetname”来修改 originalText。
-
我还是不明白 XD 我需要看看它:/ 我也想看看@Harsh 说了什么。
-
是的!!! @ScottHoltzman 你明白了!发现!像魔术一样工作。谢谢!