刚刚花了 2 个小时尝试让这个简单的代码工作。宏选择然后删除指定的列。然后将 ColumnWidth 设置为 Col T = 50。
Col T 是标识符前其它列被删除并且剩余的列向左移动。
两个问题:
鉴于代码逐行执行,为宽度重新调整大小而指定的 Col T 实际上不应该是不同的列吗,即在删除列并将剩余列左移之后的新列字母?
我如何使用编辑器“视图窗口”(见下文)中的信息来调试此代码?
Watch :Columns("A:G,I:I,K:S,U:Z") : <Out of context> : Variant/Empty : Del_sel_cols_set_col_width50.del_selected_cols_resizeColT_width50 Watch :Columns("T").ColumnWidth = 50 : <Out of context> : Variant/Empty : Del_sel_cols_set_col_width50.del_selected_cols_resizeColT_width50
我的代码...
Sub del_selected_cols_resizeColT_width50()
Columns("A:G,I:I,K:S,U:Z").Delete
Columns("T").ColumnWidth = 50
End Sub
答案1
将列引用更改为范围引用并指定 EntireColumn。
是的,删除之后T列变成了C列。
'either resize column T here
Columns("T").ColumnWidth = 50
Range("A:G,I:I,K:S,U:Z").EntireColumn.Delete
'or resize the new column C (formerly T) here
Columns("C").ColumnWidth = 50
答案2
尝试:
Columns("U:Z").Delete
Columns("K:S").Delete
Columns("I").Delete
Columns("A:G").Delete
Columns("T").ColumnWidth = 50