調査によると、これは VBA コードを使用せずには不可能かもしれませんが、それでも、尋ねる価値はあると思います。 ユーザーがセルにデータを入力できるのは、直前のセルが特定の値である場合のみにしたいのです。
たとえば、A1に、、、、という値を持つドロップダウンリストがあります。Staff
ユーザーStudent
が、、、を選択Manager
した場合、Board
Staff
Student
Manager
A1の値はB1自動的に生成されるユーディーエフ IF
式ですが、A1で選択された値が の場合Board
、ユーザーは特定の数値を入力できます。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
これで開始できるはずです。