2015-11-13 163 views
0

我正在Excel电子表格中编写一个宏,以便用另一个单元格的内容替换一个单元格中的值,并在每次看到该单词时循环显示替换相同值的原始文本。 例如,我在单元格范围内有一个文本,其中每行都有一个单词“tagname”,我想用同一电子表格的单元格A1的值替换“tagname”,例如说“Maggie”,而不是标签名。 这是我的代码至今:需要用另一个单元格替换单元格中的值

Private Sub CommandButton21_Click() 
Dim OriginalText As Range 
Dim CorrectedText As Range 
'definition of ranges 

Set OriginalText = Range("H4:H10") 

'setting of ranges 

For Each OriginalText In CorrectedText 

CorrectedText.Value = Replace(OriginalText.Value, "tagname", Range("D2").Value) 

Next OriginalText 
'a loop through the original text to replace the word "tagname" with the value of cell D4 

Columns(2).Clear 'clear column 2 for the Corrected Text 
Range("A24:A30").Offset(, 1).Value = CorrectedText 
'copy corrected text in these cells 
End Sub 

我得到运行时错误424,对象。

+0

最后一行应该是'范围。( “A24:A30”)偏移(1).value的= CorrectedText.Value' –

+0

那被说你不需要循环,看来你正在替换。而不是整个循环只是放置这个:'correctedText.Replace什么:=“标记名”,替换:=范围(“D2”)' –

回答

0

只是把它放在一起,这就是我将如何做到这一点。

Sub CommandButton21_Click() 
Dim correctedText As Range 
Dim OriginalText As Range 
Dim i As Long 
Dim cel As Range 

Set correctedText = Range("B24") 
Set OriginalText = Range("H4:H10") 

OriginalText.Replace "tagname", Range("d4") 
correctedText.Resize(OriginalText.Rows.Count).Value = OriginalText.Value 
OriginalText.Replace Range("d4"), "tagname" 

End Sub 

或者,如果你真的想要的循环:

Sub CommandButton21_Click() 
Dim correctedText As Range 
Dim OriginalText As Range 
Dim i As Long 
Dim cel As Range 

Set correctedText = Range("B24") 
Set OriginalText = Range("H4:H10") 
i = 0 
For Each cel In OriginalText 
    correctedText.Offset(i).Value = Replace(cel.Value, "tagname", Range("d4")) 
    i = i + 1 
Next cel 

End Sub 
+0

谢谢你,斯科特,像魔术一样工作。 –

+0

我现在正在循环遍历范围D4到D10,一遍又一遍地执行相同的循环。我尝试了2个循环,一个在另一个内,但我得到的是相同的文本三次。你可以善意地循环我的代码,看看我错了哪里? –

+0

子CommandButton21_Click() 昏暗correctedText作为范围 昏暗OriginalText作为范围 昏暗我只要 昏暗J所示龙 昏暗CEL1作为范围 昏暗CEL2作为范围 集correctedText =范围( “B24”) 集OriginalText =范围( “H3:H20”) 集loopText =范围( “D2:D4”) I = 0 J = 0 对于每个CEL2在loopText 对于每个CEL1在OriginalText correctedText.Offset(ⅰ)。价值=替换(cel1.Value,“tagname”,Range(“D2”)) i = i + 1 Next cel1 j = j + 1 Next cel2 End Sub –

相关问题