2013-10-04 145 views
0

當我在VBA中使用命名範圍時,出現錯誤「該命令無法用於多個選擇」。該命令不能用於多個選擇vba命名範圍

VBA是用來派生一個公式,這是好的,但我想只是粘貼的值。

Set rngCopy = rngCopy.Offset(0, 10).SpecialCells(xlCellTypeVisible) 

rngCopy.Activate 

rngCopy.Value = _ 
    "=IF(RC[-10]="""","""",IF(WEEKDAY(RC[-10])=2,RC[-10]-3,IF(WEEKDAY(RC[-10])<>2,RC[-10]-1)))" 

rngCopy.Copy 
rngCopy.PasteSpecial Paste:=xlPasteValues, _ 
Operation:=xlNone, _ 
SkipBlanks:=False, _ 
Transpose:=False 
+0

你在哪一行得到錯誤?我的猜測是,你試圖一次向幾個單元格添加一個公式。我不認爲這是可能的。 – ARich

+0

我只是想複製公式值。該公式本身複製罰款@ARICH只是不復制的價值觀。 rngcopy.value = rngcopy.value雖然工作。 –

回答

1

它適用於我。另外如果你的意圖是複製粘貼公式作爲值,那麼你不需要走那麼長的路線。你可以簡單地使用Application.Evaluate

Sub Sample() 
    Dim rngCopy As Range 

    Set rngCopy = Range("A1") 
    Set rngCopy = rngCopy.Offset(0, 10).SpecialCells(xlCellTypeVisible) 

    rngCopy.Value = Application.Evaluate(_ 
        "=IF(RC[-10]="""","""",IF(WEEKDAY(RC[-10])=2,RC[-10]-3,IF(WEEKDAY(RC[-10])<>2,RC[-10]-1)))" _ 
        ) 
End Sub 

測試與非連續範圍也適用。

Sub Sample() 
    Dim rngCopy As Range 

    Set rngCopy = Union(Range("A1"), Range("D1"), Range("F1")) 

    rngCopy.Activate 

    rngCopy.Value = Application.Evaluate(_ 
        "=IF(RC[-10]="""","""",IF(WEEKDAY(RC[-10])=2,RC[-10]-3,IF(WEEKDAY(RC[-10])<>2,RC[-10]-1)))" _ 
        ) 
End Sub 
+0

嗨,我想通了,做了rngcopy.value = rngcopy.value這樣,它似乎不會混淆關於多個範圍。謝謝。 –

+1

是的,你可以做到這一點,但如果你使用'Application.Evaluate'則不需要;) –

+0

啊我明白了。所以application.evaluate代碼只是給你價值。將有一個發揮與此。 –