Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】エラー対策(データクレンジング/StrConv)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

データのクレンジング

・マクロが正常に動作するように、想定内の形式に変換すること

・マクロがエラーになる主な原因

 1.コードの記述ミス
  ー> スペルや構文を見直し修正する


 2.ユーザーの操作ミス
  -> 数値を入力すべきところを文字列を入力しないように設定したり、
     説明文などを付ける

 

 3.データの間違い
  ->マクロが動作できる形式に修正、
    または実行前にエラーの箇所を特定して修正する

 

※クレンジング = Clensing・・・洗浄、浄化する

StrConv

・全角、半角を変換する

・StrConv(元の文字列, 変換する文字種)
 StrConv(Range("A1"), vbWide)・・・セルA1 を全角に変換する
 StrConv(Range("A1"), vbNarrow)・・・セルA1 を半角に変換する

・すべて半角(全角)に変換し元のデータと比較して、
 同じであれば、そのセルはすべて半角(全角)である と判断できる

 

※Wide・・・幅が広い
 Narrow・・・狭い
 StrConv = Strings Convert(たぶん)
  String・・・文字列、ひも、弦
  Convert・・・変更、変換

 

                    

選択したセルの列の2行目から最終行を全角(半角)に変換する

Sub Narrow_or_Wide()
 Dim r As Long
 Dim c As Long
 Dim LastR As Long
 Dim ans As Long 'answer・・・「返答」の略として使用


 ans = MsgBox("正しい列を選択しましたか?", vbYesNo)

 If ans = vbNo Then
  End
 End If


 r = Selection.Row
 c = Selection.Column
 LastR = Cells(Rows.Count, c).End(xlUp).Row


 For r = 2 To LastR
  Cells(r, c) = StrConv(Cells(r, c), vbNarrodw)
  'Cells(r, c) = StrConv(Cells(r, c), vbWide)

 Next r

 MsgBox "done"
End Sub

 

                    

上記の書き方は、私が良くやる方法です。

操作したい行/列をシート上で選択しておいて、

その行/列に対してマクロを作成、実行する。

 

こうすると、

行/列を検索、判断するコードを記述する手間が省けます。

 

最初にマクロを実行したい行/列を選択したかどうかを確認する

メッセージを表示させてから、本体のマクロを実行させれば、

エラーとなる原因の「2.操作ミス」 を回避することができます。

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/