VBA,如果价值喜欢

时间:2017-09-29 17:41:45

标签: excel vba excel-vba

我有一个列(x)并尝试在另一列(d)中执行If和like。在选择自动填充部件上获得范围错误。

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")

3 个答案:

答案 0 :(得分:3)

不要进行自动填充,只需立即设置值。

另外,不要忘记为所有范围对象提供工作表父级:

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 

答案 1 :(得分:2)

尝试使用列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

答案 2 :(得分:1)

尝试改变 Selection.AutoFill Destination:=src.Columns("D")Selection.AutoFill Destination:=src.Columns("D:D")

这将把这个公式一直拖到D列,这就是我假设你要做的事情,然而,它实际上会下到第1048576行,所以除非你试图这样做,将第二个范围更改为D& whatevervaluehere