Excel VBA 生成的复选框未与单元格对齐
Excel VBA generated checkboxes not aligning with cells
我想为 select 行创建一个包含 100 个复选框的列。
我可以创建复选框,但随着它们进一步向下移动 sheet,复选框会慢慢偏离所需的行。
标记为第 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
我做了一个独立的传播sheet,完全空白,里面只有这个宏。
我以前在另一个传播中遇到过这种情况sheet,基本上是相同的编码技术。
当然,现在我也无法让它发生。我会看看我是否可以用另一种方式追查原因。我会更新 if/when 我找到我的 cause/error.
此问题是由于运行在扩展桌面显示器上运行电子表格并打开应用程序的修复缩放引起的。
我使用的笔记本电脑的显示屏扩展到第二台显示器。当电子表格完全显示在笔记本电脑显示器上时,代码达到了预期的结果(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 a checkboxes with fix scaling on,以及主显示屏上的电子表格
标记为第 101 行的复选框 - chkbox101 按预期在第 101 行结束
C 列复选框具有固定缩放 ,电子表格在另一个显示器上
标记为第 101 行的复选框 - chkbox101 在第 102 行结束
col e checkboxes with fixed scaling OFF,另一个显示器上的电子表格
标记为第 101 行的复选框 - chkbox101 按预期在第 101 行结束
我想为 select 行创建一个包含 100 个复选框的列。
我可以创建复选框,但随着它们进一步向下移动 sheet,复选框会慢慢偏离所需的行。
标记为第 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
我做了一个独立的传播sheet,完全空白,里面只有这个宏。
我以前在另一个传播中遇到过这种情况sheet,基本上是相同的编码技术。
当然,现在我也无法让它发生。我会看看我是否可以用另一种方式追查原因。我会更新 if/when 我找到我的 cause/error.
此问题是由于运行在扩展桌面显示器上运行电子表格并打开应用程序的修复缩放引起的。
我使用的笔记本电脑的显示屏扩展到第二台显示器。当电子表格完全显示在笔记本电脑显示器上时,代码达到了预期的结果(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 a checkboxes with fix scaling on,以及主显示屏上的电子表格 标记为第 101 行的复选框 - chkbox101 按预期在第 101 行结束
C 列复选框具有固定缩放 ,电子表格在另一个显示器上 标记为第 101 行的复选框 - chkbox101 在第 102 行结束
col e checkboxes with fixed scaling OFF,另一个显示器上的电子表格 标记为第 101 行的复选框 - chkbox101 按预期在第 101 行结束