【问题标题】:Excel VBA generated checkboxes not aligning with cellsExcel VBA 生成的复选框未与单元格对齐
【发布时间】:2021-06-24 20:32:27
【问题描述】:

我想创建一个包含 100 个复选框的列来选择行。
我可以创建复选框,但随着它们在工作表中进一步向下,复选框会慢慢偏离所需的行。 标记为第 101 行的复选框 - chkbox101 最终位于第 102 行。checkbox labeled chkbox101 in row 102

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

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

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

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

【问题讨论】:

  • 我不能让这种情况发生在我身上。你能说明它首先发生在哪里吗?
  • 我可以确认,上面的代码没有任何问题。我将复选框准确地放在它们应该在的位置。我无法重现您描述的问题。你能分享你的工作簿吗?
  • 行高是多少?我试过 18 和 20 像素。两者都能正常工作。
  • 你的工作表缩放设置是什么?

标签: excel vba checkbox


【解决方案1】:

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

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

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

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

Sub InsertCheckboxes()

将 cBox 调暗为复选框

将 ThisCol 调暗为字符串 ThisCol = Sheet1.Range("d1").Value

将单元格调暗为范围

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

cBox.Text = "CHKBX " & cell.Row

下一个单元格 结束子

这里附上一张屏幕截图 picture of original checkbox alignment issues and with fix scaling turned off

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2012-10-30
    • 1970-01-01
    • 2018-02-11
    相关资源
    最近更新 更多