2016-10-10 9 views
2

簡単な質問。私は2つの異なる列にデータを変換する必要があり、使用されるコードは両方の列で同じになるので、コードを2回書くのではなく、単に「一緒に追加する」ことができますか?ここでVBAのWithブロックの1つ以上のセル範囲

が、私は別の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の良いワークシートオブジェクトで)あなたのメインの手順でこれを入れて

+0

'With'でこれを行うことはできません;) – R3uK

+0

これは、関数を使う必要があるときです。 ;) – R3uK

+0

@ R3uKだから私はちょうど別のビットのコードを書く必要がありますか? –

答えて

2

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 
+0

あなたは私の新しい親友です! –

関連する問題