VBA,如果值喜欢

我有一个列(x),并试图做一个如果在另一列(d)。 在select自动填充部件上获取范围错误。

Dim src As Range Set src = Worksheets("File").Range("2:17783") If (Range("x2").Value Like "*ProductType:'FXD';*") Then Range("D2").Value = "FXD" ElseIf (Range("x2").Value Like "*;ProductSubType:'SWLEG'*") Then Range("D2").Value = "XSW" End If Selection.AutoFill Destination:=src.Columns("D") 

而不是自动填充只需设置一次的值。

另外不要忘记提供表单父项到所有的范围对象:

 Dim src As Range Set src = Worksheets("File").Range("2:17783") If (Worksheets("File").Range("x2").Value Like "*ProductType:'FXD';*") Then Worksheets("File").Range("D2:D17783").Value = "FXD" ElseIf (Worksheets("File").Range("x2").Value Like "*;ProductSubType:'SWLEG'*") Then Worksheets("File").Range("D2:D17783").Value = "XSW" End If 

尝试使用列X来设置值的范围以填入D列。

 with worksheets("file") select case true case .cells(2, "X").value2 like "*ProductType:'FXD';*" .range(.cells(2, "D"), .cells(.cells(.rows.count, "X").end(xlup).row, "D")) = "FXD" case .cells(2, "X").value2 like "*;ProductSubType:'SWLEG'*" .range(.cells(2, "D"), .cells(.cells(.rows.count, "X").end(xlup).row, "D")) = "XSW" case else 'do nothing end select end with 

尝试将Selection.AutoFill Destination:=src.Columns("D")更改为Selection.AutoFill Destination:=src.Columns("D:D")

这将拖曳公式一直到列D,这是我想你想要做的事情,但是,它会直接下降到行1048576,所以除非你想这样做,改变第二个范围到Dwhatevervaluehere