私は100のセル行(と2つの列)のデータを生成する関数を持っています。各行(3列目)には、クリックするとカスタムモーダルダイアログボックスが表示されるボタンを追加する必要があります。このダイアログボックスでは、4つのオプション/ボタンを選択できます。シートセルのデータの横にVBAでプログラムでボタンを追加する方法はありますか?
どうすればいいですか?
/T
私は100のセル行(と2つの列)のデータを生成する関数を持っています。各行(3列目)には、クリックするとカスタムモーダルダイアログボックスが表示されるボタンを追加する必要があります。このダイアログボックスでは、4つのオプション/ボタンを選択できます。シートセルのデータの横にVBAでプログラムでボタンを追加する方法はありますか?
どうすればいいですか?
/T
私は、これは素敵な道にあなたを取得するのに十分であると思う:
Sub a()
Dim btn As Button
Application.ScreenUpdating = False
ActiveSheet.Buttons.Delete
Dim t As Range
For i = 2 To 6 Step 2
Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3))
Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
.OnAction = "btnS"
.Caption = "Btn " & i
.Name = "Btn" & i
End With
Next i
Application.ScreenUpdating = True
End Sub
Sub btnS()
MsgBox Application.Caller
End Sub
それは、ボタンを作成し、butnSにそれらを結合し()。 btnS()サブでは、あなたのダイアログが表示されるはず、など
あなたの関数は、列AとBにデータを入力し、ユーザーがセルを選択した場合に表示されるように、カスタムユーザーフォームにしたいと仮定ユーザーが列Cに任意のセルを選択し、あなたが列Cの各セルを移入することがあります時にユーザーフォームが表示されること
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim clickRng As Range
Dim lastRow As Long
lastRow = Range("A1").End(xlDown).Row
Set clickRng = Range("C1:C" & lastRow) //Dynamically set cells that can be clicked based on data in column A
If Not Intersect(Target, clickRng) Is Nothing Then
MyUserForm.Show //Launch custom userform
End If
End Sub
注:これを行うには、列C.一つの方法は、SelectionChange
イベントを使用することです「フォームを起動するセルを選択する」のようなもので、それを明白にするユーザーはアクションを実行する必要があります(ボタンをクリックすると自然にクリックする必要があります)
私はアイデアが好きです! – tobefound
チェック:3番目の列にはList/ComboBoxのようなものが必要ですが、モーダルですか? –
belisariusとRemnantの両方が動作します – datatoo