顧客リストがあるのですが、電話の列が0が抜けて、かつ上のようにきちんとした数字では
なくなって表示されてしまいます。
そこで、
1行目に、「電話」とある列を探し出し、その2行目から下に向かって以下のマクロを走らせていただきたいのです。
・先頭に、0がないときは、0を1つだけ足す。
・0の値になっているときには、00-0000-0000とする
・何も入っていない行が2つ続いた時に動作を停止する。
・電話の列すべてを文字列での書式で登録する。(現在は、標準になっているようです)
以上をお願いいたします。
(直接の回答以外、関数でできるとのご回答等にはポイントを差し上げられませんので、
ご注意くださいませ。)
以下のコードを標準モジュールに貼り付けて、adjust_telno サブルーチンを実行してください。
Function is_blank_cell(c) is_blank_cell = IsEmpty(c) Or c.Value = "" End Function Sub adjust_telno() ' 「電話」列を探す telno_col = -1 last_col = Cells(1, Columns.Count).End(xlToLeft).Column For c = 1 To last_col If Cells(1, c).Value = "電話" Then telno_col = c Exit For End If Next If telno_col = -1 Then MsgBox "「電話」列がありません" Exit Sub End If ' 書式を文字列にする Cells(1, telno_col).EntireColumn.NumberFormatLocal = "@" ' 一応、最後に値が入っている行を last_row = Cells(Rows.Count, telno_col).End(xlUp).Row ' 電話番号を処理 For r = 2 To last_row If Not is_blank_cell(Cells(r, telno_col)) Then v = Cells(r, telno_col).Value If v = 0 Then Cells(r, telno_col).Value = "00-0000-0000" ElseIf Left(v, 1) <> "0" Then Cells(r, telno_col).Value = "0" & v End If Else ' 空白セルがふたつ続いたら処理を止める If is_blank_cell(Cells(r + 1, telno_col)) Then Exit For End If End If Next End Sub
ありがとうございます!いつもながら、完璧なご対応で感謝します。わかりやすいのも初心者にありがたいです。
2016/06/24 11:56:08