• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルデータにて、列順変更のマクロを作成中です。)

エクセルデータの列順変更マクロの作成方法

このQ&Aのポイント
  • エクセルデータにて、列順変更のマクロを作成中です。項目名を検索して並び順を変更している際に、項目名が突然変更されることがあります。その場合に、MsgBoxをInputBoxに変更して項目を入力する方法があります。具体的には、「郵便番号」がない場合には「〒」を代入するようにすることができます。マクロの書き方についてアドバイスをいただけますか?
  • エクセルデータにて、列順変更のマクロを作成中です。要件は、A列、B列、C列、D列の順番を変更することです。項目名は「電話番号」「名前」「住所」「郵便番号」です。しかし、項目名が突然変更される場合があります。その場合に、InputBoxを使用して項目名を入力するようにしたいです。具体的なマクロの書き方を教えてください。
  • エクセルデータにて、列順変更のマクロを作成中です。項目名を検索して並び順を変更している際に、項目名が変更されることがあります。そこで、InputBoxを使用して項目名を入力するようにしたいです。具体的なマクロの書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.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)
回答No.2

>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

okwavee4927
質問者

お礼

watabe2007さん。ありがとうございました。 思っていたとおりの動きになりました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>項目名が突然「郵便番号」⇒「〒」、「〒番号」などに変更されてしまいます。 全て検索をかければ 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

okwavee4927
質問者

補足

ご回答ありがとうございました。 データは例で挙げたもののみではなく、20列程あり項目名が毎回異なるものが入ってくる為、 困っております。「郵便番号」⇒「〒」「〒番号」「ゆうびん」「A」「番号」に変わっていたり します。できれば毎回マクロの中身を修正ではなく、InputBoxを使用し、回避したいと考えております。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう