添加没有标题单元格的复选框
Add checkbox without caption cell
我试图找到与同一问题相关的旧帖子,但找不到适合我的代码的解决方案。
每次向 sheet 添加新行时,我都尝试向 Excel sheet 添加复选框。将日期添加到范围 A11:A80 时,应添加复选框。
但是,使用我当前的代码添加了复选框,但总是添加了我不想要的标题。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A11:A80")) Is Nothing Then
Call checkbox
End If
End Sub
Sub checkbox()
Dim wsTarget As Worksheet
Dim oCheckBox As checkbox
Dim r As Range
Dim cell As Range
Set wsTarget = ActiveSheet
Set r = wsTarget.Range("A11:A80")
With wsTarget
For Each cell In r
If Weekday(cell, vbMonday) > 5 Then
Else
If Not IsEmpty(cell.Value) Then
.CheckBoxes.Add Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15
End If
End If
Next cell
End With
End Sub
另一个问题是,当我修改 A11:A80 范围内的单元格时,不会添加复选框,它仅在我手动 运行 宏
时有效
非常感谢所有帮助!
提前谢谢你
使用选择复选框修改属性。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A11:A80")) Is Nothing Then
Call checkbox
End If
End Sub
Sub checkbox()
Dim wsTarget As Worksheet
Dim oCheckBox As checkbox
Dim r As Range
Dim cell As Range
Set wsTarget = ActiveSheet
Set r = wsTarget.Range("A11:A80")
With wsTarget
For Each cell In r
If Weekday(cell, vbMonday) > 5 Then
Else
If Not IsEmpty(cell.Value) Then
ActiveSheet.CheckBoxes.Add(cell.Offset(0, 9).Left, cell.Offset(0, 9).Top, 60, 15).Select
With Selection
.Caption = "Test caption name"
.Value = xlOn 'xlOff to default
End With
End If
End If
Next cell
End With
End Sub
(1) 设置标签很简单。您所要做的就是将创建的复选框分配给一个变量并使用它:
cb As CheckBox
Set cb = .CheckBoxes.Add(Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15)
cb.Caption = ""
(2) 我假设您的 Worksheet_Change
-事件在错误的地方,它需要在 Worksheet-Module。我看不出它没有被触发的其他原因
(3) 如果您多次调用 checkbox-routine,它会为每一行创建多个复选框。我建议您为包含行号的每个复选框设置一个名称,并在添加新复选框之前进行测试(如果它已经存在)。
Dim cbName As String, cb As CheckBox
cbName = "checkBox_" & cell.Address
On Error Resume Next
Set cb = Nothing
Set cb = .CheckBoxes(cbName)
On Error GoTo 0
If cb Is Nothing Then
Set cb = .CheckBoxes.Add(Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15)
cb.Caption = ""
cb.Name = cbName
End If
我试图找到与同一问题相关的旧帖子,但找不到适合我的代码的解决方案。
每次向 sheet 添加新行时,我都尝试向 Excel sheet 添加复选框。将日期添加到范围 A11:A80 时,应添加复选框。 但是,使用我当前的代码添加了复选框,但总是添加了我不想要的标题。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A11:A80")) Is Nothing Then
Call checkbox
End If
End Sub
Sub checkbox()
Dim wsTarget As Worksheet
Dim oCheckBox As checkbox
Dim r As Range
Dim cell As Range
Set wsTarget = ActiveSheet
Set r = wsTarget.Range("A11:A80")
With wsTarget
For Each cell In r
If Weekday(cell, vbMonday) > 5 Then
Else
If Not IsEmpty(cell.Value) Then
.CheckBoxes.Add Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15
End If
End If
Next cell
End With
End Sub
非常感谢所有帮助! 提前谢谢你
使用选择复选框修改属性。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A11:A80")) Is Nothing Then
Call checkbox
End If
End Sub
Sub checkbox()
Dim wsTarget As Worksheet
Dim oCheckBox As checkbox
Dim r As Range
Dim cell As Range
Set wsTarget = ActiveSheet
Set r = wsTarget.Range("A11:A80")
With wsTarget
For Each cell In r
If Weekday(cell, vbMonday) > 5 Then
Else
If Not IsEmpty(cell.Value) Then
ActiveSheet.CheckBoxes.Add(cell.Offset(0, 9).Left, cell.Offset(0, 9).Top, 60, 15).Select
With Selection
.Caption = "Test caption name"
.Value = xlOn 'xlOff to default
End With
End If
End If
Next cell
End With
End Sub
(1) 设置标签很简单。您所要做的就是将创建的复选框分配给一个变量并使用它:
cb As CheckBox
Set cb = .CheckBoxes.Add(Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15)
cb.Caption = ""
(2) 我假设您的 Worksheet_Change
-事件在错误的地方,它需要在 Worksheet-Module。我看不出它没有被触发的其他原因
(3) 如果您多次调用 checkbox-routine,它会为每一行创建多个复选框。我建议您为包含行号的每个复选框设置一个名称,并在添加新复选框之前进行测试(如果它已经存在)。
Dim cbName As String, cb As CheckBox
cbName = "checkBox_" & cell.Address
On Error Resume Next
Set cb = Nothing
Set cb = .CheckBoxes(cbName)
On Error GoTo 0
If cb Is Nothing Then
Set cb = .CheckBoxes.Add(Left:=cell.Offset(0, 9).Left, Top:=cell.Offset(0, 9).Top, Width:=60, Height:=15)
cb.Caption = ""
cb.Name = cbName
End If