Excel 单元格是否包含复选框?
我有两种复选框 每种类型的复选框都在其“列”中定义:Excel 单元格是否包含复选框?,excel,vba,Excel,Vba,我有两种复选框 每种类型的复选框都在其“列”中定义: 第一个被命名为“CheckBoxeMacro”&i(在第3列中),并且 第二个在(第5列)中命名为“CheckBox”&i 我想要第二种类型的复选框来描述我关于总和的指令,只要要添加的数据是在两个单元格之间的行中设置的,而第一种类型的复选框(“checkboxMacro”&I)是在两个单元格之间设置的 我试过了,但似乎“TypeOf”用错了 当单元格包含复选框而不是数字或什么都没有时,如何使用必须停止的事实停止到正确的行 Sub Somm
- 第一个被命名为
(在第3列中),并且“CheckBoxeMacro”&i
- 第二个在(第5列)中命名为
“CheckBox”&i
“checkboxMacro”&I
)是在两个单元格之间设置的
我试过了,但似乎“TypeOf
”用错了
当单元格包含复选框而不是数字或什么都没有时,如何使用必须停止的事实停止到正确的行
Sub SommerTest()
Dim i As Byte
For r = 1 To 178
If TypeOf Sheets(2).Cells(r, 3) Is Object Then
For i = r + 1 To 178
While IsNumeric(Sheets(2).Cells(i, 3)) _
And (Sheets(2).Cells(i, 3).Value <> "")
With Sheets(2)
If .OLEObjects("CheckBox" & i).Object.Value = True _
And ThisWorkbook.Worksheets(2).Cells(i, 4)="" Then
For Each j In Array(7, 8, 9, 10, 15, 16, 17)
ThisWorkbook.Worksheets(2).Cells(r, j).Value = _
ThisWorkbook.Worksheets(2).Cells(r, j).Value _
+(ThisWorkbook.Worksheets(2).Cells(i, j).Value) _
*(ThisWorkbook.Worksheets(2).Cells(i, 3).Value)
ThisWorkbook.Worksheets(2).Cells(i, 4).Value _
= "Sélectionné"
Next j
ElseIf .OLEObjects("CheckBox" & i).Object.Value = False _
And ThisWorkbook.Worksheets(2).Cells(i, 4) _
= "Sélectionné" Then
For Each j In Array(7, 8, 9, 10, 15, 16, 17)
ThisWorkbook.Worksheets(2).Cells(r, j).Value = _
ThisWorkbook.Worksheets(2).Cells(r, j).Value _
-(ThisWorkbook.Worksheets(2).Cells(i, j).Value) _
*(ThisWorkbook.Worksheets(2).Cells(i, 3).Value)
ThisWorkbook.Worksheets(2).Cells(i, 4).Value = ""
Next j
End If
End With
Wend
Next i
End If
Next r
End Sub
Sub-SommerTest()
作为字节的Dim i
对于r=1至178
如果表(2).单元格(r,3)的类型为对象,则
对于i=r+1至178
而数字(第(2)页、单元格(i、3))_
和(第(2)页。单元格(i,3)。值“”)
附页(2)
If.OLEObjects(“复选框”&i).Object.Value=True_
和这个工作簿。工作表(2)。单元格(i,4)=“然后
对于阵列中的每个j(7、8、9、10、15、16、17)
此工作簿。工作表(2)。单元格(r,j)。值=_
此工作簿。工作表(2)。单元格(r,j)。值_
+(本工作簿.工作表(2).单元格(i,j).值)_
*(此工作簿。工作表(2)。单元格(i,3)。值)
此工作簿。工作表(2)。单元格(i,4)。值_
=“选择”
下一个j
ElseIf.OLEObjects(“复选框”&i).Object.Value=False_
和本工作簿。工作表(2)。单元格(i,4)_
那么“选择”呢
对于阵列中的每个j(7、8、9、10、15、16、17)
此工作簿。工作表(2)。单元格(r,j)。值=_
此工作簿。工作表(2)。单元格(r,j)。值_
-(本工作簿.工作表(2).单元格(i,j).值)_
*(此工作簿。工作表(2)。单元格(i,3)。值)
ThisWorkbook.Worksheets(2).Cells(i,4).Value=“”
下一个j
如果结束
以
温德
接下来我
如果结束
下一个r
端接头
正如@Rory所说,您可以围绕topleftcell
属性进行调查,不确定它相对于控件大小的准确性,但类似于
.shapes(“CheckBox21”).oleformat.object.topleftcell.address
Dim s as shape
for each s in activesheet.shapes
if s.oleformat.object.topleftcell.address=activecell.address.......
end if
next s
.oleobjects(“CheckBox21”).topleftcell.address
Dim s as shape
for each s in activesheet.shapes
if s.oleformat.object.topleftcell.address=activecell.address.......
end if
next s
希望这有帮助。单元格不包含形状。您必须循环检查复选框并测试
TopLeftCell
属性以确定它们的位置。是的,我以前尝试过:Sub-SommerTest()将r作为整数Dim h作为整数Dim k作为整数l=1到178 r=l+1h=(Sheets(2).Shapes(“CheckBoxMacro”&l.Top)/(Sheets(2).Shapes(“CheckBoxMacro”&l.Width)+1k=(表(2).Shapes(“CheckBoxMacro”&r.Top)/(表(2).Shapes(“CheckBoxMacro”&r.Width)-1表示i=h到k…缩进代码时(尤其是嵌套严重的代码时)在理解代码方面会产生巨大差异。谢谢,什么是活动单元格?应该很少使用的东西,因为我想描述包含复选框的单元格行,以停止我的指示。为什么我们不能询问单元格是否包含复选框,而我们可以知道单元格是否包含数字数据或单元格是否为空?必须有复选框的跟踪在细胞中…特别是因为它是一个物体,我们可以用物体图像来做。我错在哪里?