gpt4 book ai didi

vba - vba 中的电子表格复选框是什么类型?

转载 作者:行者123 更新时间:2023-12-02 04:33:57 25 4
gpt4 key购买 nike

我有以下代码,应该为旁边的列表对象中的每一行添加一个复选框。我想开发一个审批工具,它从数据库加载数据并将其加载到列表对象中。之后,我可以使用复选框批准或拒绝数据并保存更改。由于列表对象的长度会发生变化,因此需要通过代码添加和删除复选框。

所以这里是代码:

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 类型库的引用(就像向 VBA 项目添加 UserForm 一样)。

复选框确实是一个 MSForms.Checkbox 实例,但为了存在于工作表上,它嵌入OLEObject 中,这是一种存在的类型在 Excel 类型库中。

因此,要获取 MSForms.Checkbox,您需要检索 OLEObject.Object 引用:

Dim ctrl As Excel.OLEObject
Set ctrl = sht.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=L, Top:=T, Width:=W, Height:=H)

Dim chkBox As MSForms.CheckBox
Set chkBox = ctrl.Object

关于vba - vba 中的电子表格复选框是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com