因此,根據研究,如果不使用 VBA 程式碼,這可能是不可能的,但儘管如此,我覺得還是值得一問。我想允許使用者僅當且僅當前面的相鄰值是特定值時才將資料輸入到儲存格中。
例如,A1 中有一個下拉列表,其中包含以下值;Staff
, Student
, Manager
, Board
.若使用者選擇Staff
, Student
,Manager
在A1,那麼其中的值B1使用自動生成UDF IF
公式,但如果A1中選擇的值為Board
,則使用者可以在A1中輸入具體數值B1。
由於自訂驗證必須返回真的或者錯誤的不存在可以輸入到公式標籤的公式自訂資料驗證窗戶。
那麼是否有解決方法,可以在儲存格中輸入公式,然後如果選擇了,則公式將不存在A1是Board
。
我希望這是可以理解的。
如果沒有,任何人都可以幫我建立一些程式碼來解決這個問題嗎?由於我的VBA知識還很業餘。
因此,據我所知,我相信這種構造中的程式碼將適用;
If Select Case Range(A1).Value = "Staff" Then B1 = Application.WorksheetFunction. (Since a Match function is employed) ElseIf Select Case Range(A1).Value = "Student" Then B1 = Application.WorksheetFunction. ElseIf Select Case Range(A1).Value = "Manager" Then B1 = Application.WorksheetFunction. ElseIf Select Case Range(A1).Value = "Board" Then (My knowledge fails me here) Else B1 ="" End If
如果可能的話我真的不想使用InputBox
感謝您的答覆。
答案1
除非我遺漏了什麼,否則 UDF 是用 VBA 編寫的,因此您的工作簿中已經有了一些程式碼。
另外,我認為您的工作簿已被鎖定,以防止人們在不應該輸入的儲存格中輸入資料。
基於這些假設,並稍微清理一下偽代碼,使用幾行額外的程式碼修改現有的 UDF:
Dim refCell as Range
refCell = ThisWorkbook.Worksheets(mySheet).Range("A1")
Dim targetCell as Range
targetCell = ThisWorkbook.Worksheets(mySheet).Range("B1")
With refCell
If .Value = "Staff" or .Value = "Manager" or .Value = "Board" then
targetCell.Locked = True
'Call your existing UDF code here to generate the value
Else
targetCell.Locked = False
End If
End With
這應該可以幫助你開始。