我已經創建了一個宏用於切換兩個單元格之間的內容。雖然它有效,但我認爲它可以用更優雅的方式書寫。開關單元宏 - 奇怪的行爲
考慮如下因素例如:
Supose,在前面的圖片選擇前兩個單元格(「傑克」和「」)。在運行宏之後,切換所選單元格的內容。
工作代碼是這樣的:
Sub SwitchCells()
Dim R As Range
Set R = Range(Selection.Address)
Dim Temp As String
If R.Count = 2 Then
Temp = R(1).Value
R(1) = R(2)
R(2) = Temp
End If
End Sub
雖然是工作,我想臨時變量也將是一個Range對象(而不是像前面例子中的String),從而使宏只會在對象之間切換位置。我願做這樣的事情
Sub SwitchCells()
Dim R As Range
Set R = Range(Selection.Address)
Dim Temp As Range
If R.Count = 2 Then
Set Temp = R(1)
R(1) = R(2)
R(2) = Temp
End If
End Sub
在宏的第二個版本的問題是,當R(1)
得到的R(2)
價值,所以做臨時變量Temp
似乎Temp
不一個變量,但是指向變量地址的指針。
我不太明白爲什麼會發生這種情況。你能解釋一下這個行爲的原因嗎?
謝謝你的時間。
愛德華多。
我覺得既然'Range.Value'是一個'Variant',它被認爲是一個值類型,因此在你的第一種情況下它被值傳遞給'Temp'。 'Range'是一個引用類型,因此在你的第二種情況下(或者換句話說就像你提到的指針)一樣被ref傳遞。閱讀[本文](https://msdn.microsoft.com/en-us/library/t63sy5hs.aspx)以獲得進一步解釋。 – Mike