2017-02-11 40 views
1
Function PS(X As Range) As Double 
    Range(X).Select 
    Selection.Copy 
    Range(X).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    Application.CutCopyMode = False 
End Function 

我試圖創建一個函數PS它取值從細胞和粘貼在使用的PS功能的小區的特殊。上面的代碼沒有給出所需的值。用戶選擇性粘貼功能

+0

的問題是,你試圖編輯/用工作表函數更改單元格的內容。這不是你應該做的。 [雖然一些有天賦的用戶已經找到了一種方法來規避這一限制(http://stackoverflow.com/questions/12501759/vba-update-other-cells-via-user-defined-function)我強烈反對它,而請您與我們分享您真正想要實現的目標,以便我們幫助您找到更好的解決方案。 – Ralph

+0

我正在嘗試創建一個用戶定義的函數,它從單元格中獲取值,並在使用用戶定義函數的單元格中粘貼特殊值。 – vaasusk

回答

0

您需要的第一件事是獲取您選擇範圍的值的函數。放置此在一個新模塊

Function Hardcode(r As Range) 
    Hardcode = r.Value 
End Function 

例如:將=Hardcode(A1)入細胞B1返回細胞A1的值。但是,從我的理解,你也想硬編碼B1的新值。要做到這一點,你需要一個單獨的Sub

將對應表你想使用上述功能在這個代碼在表模塊

Private Sub Worksheet_Change(ByVal Target As Range) 
    If InStr(LCase(Target.Formula), "hardcode") Then 
     Target.Value = Target.Value 
    End If 
End Sub