次のコードは、リストオブジェクトの横にあるすべての行にチェックボックスを追加することになっています。私はデータベースからデータを読み込んでそれをリストオブジェクトにロードする承認ツールを開発したいと考えています。その後、チェックボックスでデータを承認または不許可にして変更を保存できます。リストオブジェクトの長さが変更されるので、チェックボックスをコードで追加して削除する必要があります。vbaにはどのようなタイプのスプレッドシートチェックボックスがありますか?
ので、ここでコード:
Sub Approval()
Dim i As Integer
Dim tbl As ListObject
Dim CBcollection As Collection
Dim CB As msforms.CheckBox ' THIS IS WRONG
Dim sht As Worksheet
Dim L As Double, T As Double, H As Double, W As Double
Dim rng As Range
Set sht = Tabelle1
Set tbl = sht.ListObjects("ApprovalTBL")
Set rng = tbl.Range(2, 1).Offset(0, -1)
W = 10
H = 10
L = rng.Left + rng.Width/2 - W/2
T = rng.Top + rng.Height/2 - H/2
For i = 1 To tbl.ListRows.Count
Set CB = sht.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=L, Top:=T, Width:=W, Height:=H)
'the line before will give me an error 13 type missmatch
CBcollection.Add (CB)
Set rng = rng.Offset(-1, 0)
T = rng.Top + rng.Height/2 - H/2
Next i
End Sub
今の質問:
通常のスプレッドシートのチェックボックスを持っている何種類?
私はいつも "Option Explicit"を使用しています。私は常に変数を正しい型に薄暗くします。私はバリアント型を使用したくありません。
フォームコントロールやActiveXコントロール:
だから、取得する
MSForms.Checkbox
あなたはOLEObject.Object
の参照を取得する必要がありますか? –