- ベストアンサー
エクセルデータの列順変更マクロの作成方法
- エクセルデータにて、列順変更のマクロを作成中です。項目名を検索して並び順を変更している際に、項目名が突然変更されることがあります。その場合に、MsgBoxをInputBoxに変更して項目を入力する方法があります。具体的には、「郵便番号」がない場合には「〒」を代入するようにすることができます。マクロの書き方についてアドバイスをいただけますか?
- エクセルデータにて、列順変更のマクロを作成中です。要件は、A列、B列、C列、D列の順番を変更することです。項目名は「電話番号」「名前」「住所」「郵便番号」です。しかし、項目名が突然変更される場合があります。その場合に、InputBoxを使用して項目名を入力するようにしたいです。具体的なマクロの書き方を教えてください。
- エクセルデータにて、列順変更のマクロを作成中です。項目名を検索して並び順を変更している際に、項目名が変更されることがあります。そこで、InputBoxを使用して項目名を入力するようにしたいです。具体的なマクロの書き方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
For Each fld In Array("名前", "郵便番号", "住所", "電話番号") fld2 = fld Do Set rng = Rows(1).Find(fld2, LookAt:=xlWhole) If Not rng Is Nothing Then Exit Do fld2 = InputBox(fld2 & "がありません、代わりの項目名を入力して下さい。") Loop rng.EntireColumn.Cut Sheets("Sheet2").Cells(1, c) c = c + 1 Next
その他の回答 (2)
- watabe007
- ベストアンサー率62% (476/760)
>MsgBoxをInputBoxにし今回は「郵便番号」がないので こんな事、かな For Each fld In Array("名前", "郵便番号", "住所", "電話番号") Set rng = Rows(1).Find(fld, LookAt:=xlWhole) fld2 = fld Do While rng Is Nothing fld2 = InputBox(fld2 & "がありません、代わりの項目名を入力して下さい。") Set rng = Rows(1).Find(fld2, LookAt:=xlWhole) Loop rng.EntireColumn.Cut Sheets("Sheet2").Cells(1, c) c = c + 1 Next
- watabe007
- ベストアンサー率62% (476/760)
>項目名が突然「郵便番号」⇒「〒」、「〒番号」などに変更されてしまいます。 全て検索をかければ For Each fld In Array("名前", "郵便番号", "〒", "〒番号", "住所", "電話番号") Set rng = Rows(1).Find(fld, LookAt:=xlWhole) If Not rng Is Nothing Then rng.EntireColumn.Cut Sheets("Sheet2").Cells(1, c) c = c + 1 End If Next
補足
ご回答ありがとうございました。 データは例で挙げたもののみではなく、20列程あり項目名が毎回異なるものが入ってくる為、 困っております。「郵便番号」⇒「〒」「〒番号」「ゆうびん」「A」「番号」に変わっていたり します。できれば毎回マクロの中身を修正ではなく、InputBoxを使用し、回避したいと考えております。 よろしくお願いいたします。
お礼
watabe2007さん。ありがとうございました。 思っていたとおりの動きになりました。