VBA中的With Block中有1个以上的单元格范围

简单的问题。 我必须在2个不同的列转换数据和使用的代码将是相同的两列,所以而不是两次写代码我可以只是“加在一起”?

这是我在另一个SO大师的帮助下写的:

With .Cells(i, 3) And .Cells(i, 5) .HorizontalAlignment = xlRight Select Case .Value Case Is > 1000000 .Value = .Value / 1000000 & "Mb" Case Is > 1000 .Value = .Value / 1000 & "kb" Case Is > 1 .Value = .Value & "b" Case Else .Value = 0 End Select End With 

我添加了And .Cells(i,5)部分,但我得到一个对象引用错误?

把它放在你的主要过程中(使用良好的工作表对象而不是wS ):

 With wS Alignment_And_Bytes .Cells(i, 3) Alignment_And_Bytes .Cells(i, 5) End With 

而你可以重用的例程(例如你的模块的底部);)

 Public Sub Alignment_And_Bytes(aCell As Range) If aCell.Cells.Count > 1 Then Exit Sub With aCell .HorizontalAlignment = xlRight Select Case .Value Case Is > 1000000 .Value = .Value / 1000000 & "Mb" Case Is > 1000 .Value = .Value / 1000 & "kb" Case Is > 1 .Value = .Value & "b" Case Else .Value = 0 End Select End With End Sub