2013-03-07 70 views
0

我對Excel 2010 VBA有疑問。做了大量的搜索解決方案,但答案沒有解決我的問題。希望stackoverflow社區能夠爲我提供一些啓示。Excel 2010 VBA用戶書寫功能修改輸入參數

我有一個用戶編寫的函數從工作表中的單元格調用。它被稱爲兩個參數 - 兩個單元格在同一張紙上。

該函數的目的是查看兩個參數,並根據函數的值返回一個字符串作爲函數的結果。

到目前爲止,函數按預期工作。

但是,如果第一個參數的值有一定的值,我希望能夠改變第二個參數的值。這是我卡住的地方。我找不到任何方法來改變它的價值。

我試過只是將參數設置爲所需的值,但會導致錯誤。 我想我可能能夠設置一個指向活動工作表的指針,因此也就是單元格,但我不知道它的引用是什麼(因爲表單中會有很多)。

說實話,我不確定我可以做我需要的。任何有關前進道路的想法或意見都會受到感謝。

至於

格雷厄姆·瓊斯

回答

1

由於用戶定義的函數(UDF)不能更改工作簿/工作表的狀態等。您可以使用工作表更改事件。

拷貝代碼到你正在進入功能

Private Sub Worksheet_Change(ByVal Target As Range) 
Application.EnableEvents=False 
    if Target.Address = "$A$1" and target.count = 1 Then ' change in first parameter - first parameter 
     if Target.Value ="something" then Range("B1").Value ="change" 
     '$A$1 is the location of fist paramenter 
     'range("b1") is second parameter on assumption 
     end if 
    Application.EnableEvents=True 
    End Sub 
+0

這一建議非常感謝工作表。我已經用它來成功檢查我的值並根據需要改變其他值。 – user133589 2013-03-12 15:30:54

0

作爲一般規則,你不希望你的Excel函數來改變他們的投入。我以前做過,但這被認爲是非常糟糕的做法。

的更可接受的方式將是使其計算所述第二參數的函數 - 這將花費2個輸入:

  1. 第一個參數
  2. 用於第二參數
的默認值

然後,您使用該finction來計算工作表中的第二個參數(換句話說,而不是讓包含您的第二個參數的單元格只是一個設置值,現在它是計算通過這個函數使用),然後你的原始函數可以一直工作,第二個參數總是期望的值。

我希望這是有道理的 - 如果沒有,請讓我知道,我會舉一個例子。