gpt4 book ai didi

excel - 如何将我的第一个复选框与相应的行链接

转载 作者:行者123 更新时间:2023-12-04 21:42:44 25 4
gpt4 key购买 nike

我正在尝试编写一个自动将复选框链接到适当行的 vba。我写了以下

Sub LinkChecklist()

Dim chk As CheckBox

For Each chk In ActiveSheet.CheckBoxes
chk.LinkedCell = chk.TopLeftCell.Offset(0, 1).Address
Next

End Sub
但是,当我运行代码时,从第 2 行 col F 开始的第一个复选框,当它应该链接到第 2 行时,链接到第 1 col G 行。这使得它下面的一些复选框也链接到错误的单元格.有关如何解决该问题的任何提示?
此外,如果有任何关于确保每一行只包含一个复选框的提示,我将不胜感激。正如您在图像中看到的,单元格中的文本越多,复选框就越困惑。有没有办法让每一行,无论它有多大或多小,都只包含一个复选框?
谢谢
image of checkboxes

最佳答案

如果您想使用复选框,那么最好使用代码来添加它们并设置属性。
例如:

'add checkboxes and link cell one column over
Sub SetUpChecks()
Dim c As Range, cb
For Each c In Selection.Cells
Set cb = Selection.Worksheet.CheckBoxes.Add(c.Left + 1, c.Top + 1, 10, 10)
cb.Placement = xlMove 'move with cell
cb.Caption = "" 'no caption
cb.LinkedCell = c.Offset(0, 1).Address 'linked cell
Next c
End Sub
您还可以编写一些代码(例如由工作表激活事件触发),通过检查 LinkedCell 来遍历任何现有的复选框并确保它们的位置正确。属性和重新定位,如果需要。
可能是这样的:
Sub RepositionCheckboxes()
Dim cb, c As Range, ws As Worksheet
Set ws = ActiveSheet
For Each cb In ws.CheckBoxes
If cb.LinkedCell <> "" Then
Set c = ws.Range(cb.LinkedCell).Offset(0, -1) 'one cell to the left of the linked cell
cb.Top = c.Top + 1
cb.Left = c.Left + 1
End If
Next cb
End Sub

关于excel - 如何将我的第一个复选框与相应的行链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72004045/

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