私は、アドレスのリストを見るために次のコードを書いています。住所1(Add1)はそれ自身の建物番号で、住所2(Add2)と連結されています。たとえば、次のようにアドレス行を連結する - 最適化とベストプラクティス
Add1を "10"、ADD2 "ベーカーストリート"
は次のようになります。
Add1を "10ベーカーストリート"、ADD2 ""
Sub concatenateAddressLines()
Application.ScreenUpdating = False
Dim lastRowNumber As Long
lastRowNumber = ActiveSheet.UsedRange.Rows.Count
Dim currentRowNumber As Long
currentRowNumber = 0
Range("1:1").Find("Add1").Select
ActiveCell.Offset(RowOffset:=1).Activate
Do Until currentRowNumber = lastRowNumber - 1
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value & " " & ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(0, 1).Value = ""
ActiveCell.Offset(RowOffset:=1).Activate
currentRowNumber = currentRowNumber + 1
Else
ActiveCell.Offset(RowOffset:=1).Activate
currentRowNumber = currentRowNumber + 1
End If
Loop
End Sub
(アドレス行1の名前は常にAdd1ですが、実際の列はファイルごとに変更されています)
私はVBAに新しいですが、私は選択とアクティブを使用して回避する必要があることを承知しています。ベストプラクティスや最適化の面でこのコードを改善する方法について、誰かから助言をいただければ幸いです。
IsNumeric関数で、各行をチェックするよりも速くすべきですか? (まあ、ベイカーストリートを使っていたので、有名なハウスナンバーを使うのが一番ですが)。それは数値として戻ってこないでしょう。 –