• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロ インプットボックスの使い方)

エクセルマクロのインプットボックスの使い方

このQ&Aのポイント
  • エクセルマクロを使って作業者に列の選択を促す方法について教えてください。
  • マクロの途中で作業者にマウスで列を選択してもらい、その取得した列番号を使って処理を行う方法を教えてください。
  • 行やセルを選択した場合にオプションやエラーメッセージを表示できる方法を教えてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

こんな感じでいかがでしょうか。ご参考まで。 Sub test() Dim マウス選択 As Range Set マウス選択 = Application.InputBox("編集したい月の列を選択してください", Type:=8) If マウス選択.Columns.Count > 1 Then MsgBox "1列を選択してね" Exit Sub End If Set マウス選択 = マウス選択.EntireColumn Debug.Print マウス選択.Address End Sub

gx9wx
質問者

お礼

教えて頂いた内容にて 行を選択した場合は回避できましたが セルを選択した場合には回避できなかったので 教えていただいたのを改良して セルを選択しても回避できるようにしてみました。 どうもありがとうございました。 On Error GoTo myError 'INPUT-BOXでキャンセルを選択した時の回避 Set マウス選択 = Application.InputBox("編集したい月の列を選択してください", Type:=8) If マウス選択.Columns.Count > 1 Then '選択したしたのが列で有り1列であるか確認 MsgBox "選択したのは列ではありません。又は2列以上を選択しています" MsgBox "プログラムを中断します" Exit Sub 'プログラム停止 End If If マウス選択.Rows.Count > 1 Then '選択したのが行の場合の処理 Else MsgBox "セルを選択しています。1列を選択してください" MsgBox "プログラムを中断します" Exit Sub 'プログラム停止 End If Set マウス選択 = マウス選択.EntireColumn Debug.Print マウス選択.Address 選択列 = マウス選択.Column 'INPUT-BOXで選択した列を数字に置き換える 選択月表示 = Cells(8, 選択列).Value '選択した列の8行目のセルの値を格納 Call データ更新3 Exit Sub 'エラーが出なかった時のmyErrorの回避用 myError: 'INPUT-BOXでキャンセルを押した時の処理 MsgBox "キャンセルが押されました。プログラム終了します。" Exit Sub End Sub

その他の回答 (1)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

セル範囲の行数がエクセルの最大セル数と一致すれば行選択されている とかで判定したらどうでしょうか? Sub 判定() If Range("A:B").Rows.Count <> Rows.Count Then  MsgBox "列を選択してください" End If End Sub ちなみに以下のコードを実行するとイミディエイトウィンドウでは × - A1 × - $A$1 ○ - A:A × - 1:1 × - A1:B1000 のように出力されます。 Sub 判定2() Dim myRng As Variant myRng = Array("A1", "$A$1", "A:A", "1:1", "A1:B1000") For i = 0 To UBound(myRng)  If Range(myRng(i)).Rows.Count = Rows.Count Then   Debug.Print "○ - " & myRng(i)  Else   Debug.Print "× - " & myRng(i)  End If Next i End Sub

gx9wx
質問者

お礼

ちょっと使いこなすのには 私にはハードルが高い見たいです。 ありがとうございました。

関連するQ&A