Sub CopyEstabelec()
Dim v As String
Dim b As String
Dim i As Long
i = 10
For i = 10 To 1619
v = Range("A" & i).Value
If v = "Estabelecimento:" Then
b = Range("B" & i).Value
Range("AA" & i).Value = b
End If
Next i
End Sub
有人可以帮我找出代码无效的原因吗?它报告"类型"不兼容。我想要做的是将范围(" B"& i)中的值复制到范围(" AA"& i)(如果范围)( " A"& i)等于" Estabelecimento:"。
答案 0 :(得分:0)
试试这个:
Sub CopyEstabelec()
Dim v As String
Dim i As Long
For i = 10 To 1619
v = TRIM(Range("A" & i).Value)
If v = "Estabelecimento:" Then
Range("AA" & i) = Range("B" & i)
End If
Next i
End Sub
答案 1 :(得分:0)
从你的代码中我不会说为什么会抛出这个错误:" types"不兼容。
您可能想要添加一些信息和/或显示导致该错误的数据。
我还建议遵循Tim的建议:逐步执行代码和查询变量状态。大多数情况下你可能想要输入立即窗口:
?Range("A" & i).Parent.Name, Range("A" & i).Address, Range("A" & i).Value
?Range("B" & i).Parent.Name, Range("B" & i).Address, Range("B" & i).Value
看哪里你实际 (工作表,地址)有什么价值
虽然作为对您的代码的贡献,请考虑以下内容:
使用SpecialCells()
对象的Range
方法仅循环遍历相关单元格 - 在这种情况下:具有"常量" (即:不是由公式产生的)文本值
Option Explicit
Sub CopyEstabelec()
Dim cell As Range
For Each cell In Range("A10:A1619").SpecialCells(xlCellTypeConstants, xlTextValues)
If cell.Value = "Estabelecimento:" Then cell.Offset(, 26).Value = cell.Offset(, 1).Value
Next cell
End Sub
或相同,但采用公式方法:
Sub CopyEstabelec()
With Range("A10:A1619").SpecialCells(xlCellTypeConstants, xlTextValues).Offset(, 26)
.FormulaR1C1 = "=IF(RC1=""Estabelecimento:"", RC2,"""")"
.Value = .Value '<~~ to keep values instead of formulas
End With
End Sub