2

わかりました、タイトルが紛らわしいかもしれないことを私は知っています、しかしここに行きます。

Excelスプレッドシートに100人のリストがあり、すべての名前が列Aにあり、チェックボックスが列Bにあり、TrueまたはFalseが列Cに非表示になっています。

列Bにチェックボックスを手動で作成しました。列Cにtrueまたはfalseが報告されます。

リストの最後までチェックボックスを作成し、上下のチェックボックスが他のチェックボックスによって破損しないように、チェックボックスを列Cの対応するチェックボックスに報告する方法はありますか?チェックボックスデータ?

4

1 に答える 1

3

シナリオには2種類のコントロールを挿入できます。1つはフォームコントロールで、もう1つはActiveXコントロールです。

フォームコントロール

フォームコントロールを挿入するには、このコードを使用する必要があります

 Sheets("Sheet1").CheckBoxes.Add 52.5, 3, 42, 17.25

構文は

 CheckBoxes.Add Cell.Left, Cell.Top, Cell.Width, Cell.Height

ActiveXコントロール

ActiveXコントロールを挿入するには、このコードを使用する必要があります

 Sheets("Sheet1").OLEObjects.Add ClassType:="Forms.CheckBox.1", Link:=False, _
 DisplayAsIcon:=False, Left:=54, Top:=1.5, Width:=39.75, Height:=11.25

したがって、上記のコントロールのいずれかを追加するには、ループを使用してセルの座標を見つけてから、関連する場所にチェックボックスを追加する必要があります。シナリオでは、フォームコントロールを使用して、上記のチェックボックスのいずれかがクリックされたときに実行される1つのコードを使用できるようにすることをお勧めします。

次に、すべてのチェックボックスが同じマクロを呼び出すようにする方法:)

ヒント:このコードはチェックボックスを作成してから、マクロをチェックボックスに割り当てます。

Sub Sample()
    Dim Shp As Shape

    '~~> Create a Checkbox
    Set Shp = Sheets("Sheet1").CheckBoxes.Add(52.5, 3, 42, 17.25)

    '~~> Assing a macro to it
    Shp.OnAction = "'" & ActiveWorkbook.Name & "'!macro_name"
End Sub

はい、次の質問です。マクロは、どのチェックボックスがそれを呼び出しているかをどのように知るのでしょうか?

ヒント:何をするかを確認してくださいApplication.Caller;)チェックボックスにリンクされているマクロにコードを配置します。

Sub macro_name()
    MsgBox "This macro was called by " & Application.Caller
End Sub

HTHそしてあなたを正しい軌道に乗せます:)

シド

于 2012-04-04T18:07:11.277 に答える