首页 > 解决方案 > Excel VBA 生成的复选框未与单元格对齐

问题描述

我想创建一列 100 个复选框来选择行。
我可以创建复选框,但随着它们在工作表中进一步向下移动,复选框会慢慢偏离所需的行。标记为第 101 行的 复选框 - chkbox101 在第 102 行结束。在第 102 行标记为 chkbox101 的复选框

Dim cBox As CheckBox

Dim cell As Range

For Each cell In Range("a2:a101")
  Set cBox = ActiveSheet.CheckBoxes.Add(cell.Left, cell.Top , cell.Width, cell.Height)
     
  cBox.Text = "CHKBX " & cell.Row
                
       
Next cell

我的缩放设置是 100% 我的行高是 14.4

我制作了一个独立的电子表格,完全空白,里面只有这个宏。

我以前在另一个电子表格中发生过这种情况,基本上是相同的编码技术。

当然,现在我也无法让它发生。我会看看我是否可以用另一种方式来追寻原因。如果/当我找到我的原因/错误时,我会更新。

标签: excelvbacheckbox

解决方案


该问题是由在扩展桌面显示器上运行电子表格并打开应用程序的修复缩放引起的。

我正在使用一台笔记本电脑,显示器延伸到第二台显示器。当电子表格完全在笔记本电脑显示器上时,代码达到了预期的结果(A列)(为什么我不能在上面发生)。当代码与电子表格一起运行时,即使部分在外部监视器上运行,也会出现不对齐的问题(C 列) - 复选框不会留在适当的行中。

当打开应用程序的修复缩放时,运行代码的监视器会更改输出。

我还稍微更改了宏以允许更改输出列。

Sub InsertCheckboxes()

将 cBox 调暗为复选框

将 ThisCol 调暗为 String ThisCol = Sheet1.Range("d1").Value

将单元格调暗为范围

对于 Range(ThisCol & "2:" & ThisCol & "101") 中的每个单元格设置 cBox = ActiveSheet.CheckBoxes.Add(cell.Left, cell.Top, cell.Width, cell.Height)

cBox.Text = "CHKBX " & cell.Row

下一个单元格 End Sub

并附在此处是 原始复选框对齐问题的图片的屏幕截图,并且修复缩放已关闭

col a checkboxes with fix scaling on,主显示上的电子表格 标记为第 101 行的复选框 - chkbox101 最终在第 101 行结束

col C 带有固定缩放复选框,另一个显示上的电子表格 标记为第 101 行的复选框 - chkbox101 最终出现在第 102 行

col e 带有固定缩放OFF的复选框,另一个显示上的电子表格 标记为第 101 行的复选框 - chkbox101 按预期在第 101 行结束


推荐阅读