代码之家  ›  专栏  ›  技术社区  ›  Mike - SMT

Workbook.Worksheets.Columns()是否使用数字而不是字符串?

  •  2
  • Mike - SMT  · 技术社区  · 6 年前

    目前我可以做两件事之一。

    这就像一根绳子。

    re_wb.Worksheets(1).Columns("K:J").ColumnWidth = 23
    

    +1 +2

    last_col = re_wb.Worksheets(1).Cells(1, re_wb.Worksheets(1).Columns.Count).End(xlToLeft).Column
    re_wb.Worksheets(1).Cells(1, last_col + 1).Value = "Correct Per CL"
    re_wb.Worksheets(1).Cells(1, last_col + 2).Value = "Is reassignment needed?"
    

    对于两列来说,分别用最后一列数字+1和+2写两行来编辑它们的宽度并不是什么大问题,但是考虑到一系列列可以用一个字符串来处理,是否可以使用两组数字(或更多数字,具体取决于一次需要编辑的列数。)

    re_wb.Worksheets(1).Columns(last_col + 1).ColumnWidth = 23
    re_wb.Worksheets(1).Columns(last_col + 2).ColumnWidth = 23
    

    re_wb.Worksheets(1).Columns(last_col + 1, last_col + 2).ColumnWidth = 23
    

    没有运气。既然我无法预测列的字母是什么,那么可以用数字来定义列的范围吗?或者我只需要一次做一个,就像我上面已经做过的那样?

    5 回复  |  直到 5 年前
        1
  •  4
  •   Comintern    6 年前

    Worksheet.Columns(foo) 返回一个 Range . 只是建立适当的 射程

    With re_wb.Worksheets(1)
        .Range(.Cells(1, last_col + 1), .Cells(1, last_col + 2)).ColumnWidth = 23
    End With
    
        2
  •  2
  •   Absinthe    6 年前
    Range(Cells(1, 1), Cells(1, 3)).EntireColumn.ColumnWidth = 15
    

        3
  •  1
  •   vacip    6 年前

    Range和EntireColumn是您的朋友:

    re_wb.Worksheets(1).Range(Cells(1,last_col + 1),Cells(1,last_col + 10)).entirecolumn.ColumnWidth = 23
    
        4
  •  1
  •   Mike - SMT    6 年前

    如果您知道要更改宽度的第一列和最后一列,可以将数字转换为字母(请参阅本网站: Number to Letter )然后转换整个范围。

    以下是此方法的示例:

    Dim start_column As String, end_column As String
    Dim last_col As Integer
    last_col = re_wb.Worksheets(1).Cells(1, re_wb.Worksheets(1).Columns.Count).End(xlToLeft).Column
    
    start_column = Split(Cells(1, last_col + 1).Address, "$")(1)
    end_column = Split(Cells(1, last_col + 2).Address, "$")(1)
    re_wb.Worksheets(1).Columns(start_column & ":" & end_column).ColumnWidth = 23
    
        5
  •  0
  •   dwirony Greg Viers    6 年前

    这里有很多很好的例子-我个人更喜欢使用一个函数将数字转换为列字母-这样我就不必太多地修改语法:

    Function ColLetter(colnum As Long)
    
        ColLetter = Split(Cells(1, colnum).Address, "$")(1)
    
    End Function
    

    re_wb.Worksheets(1).Columns(ColLetter(last_col + 1) & ":" & ColLetter(last_col + 2)).ColumnWidth = 23