• 締切済み

マクロのセルの範囲指定

お世話になります。マクロ初心者です。エクセルの業務でマクロを作成しようとしているのですが、マクロ実行で、セルの範囲が指定される方法はありますか?例えば シート名  開始  終了  Sheet1   A1  D10 を入力して、ボタンを押したらA1からD10までのセルが選択されることです。説明不足ですみません。宜しくお願いします。

みんなの回答

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.5

こんにちは。 基本的な機能のみのコードです。 Sub Sample()   Dim SheetNm As String, Scell As String, Ecell As String   SheetNm = InputBox("シート名")   Scell = InputBox("開始")   Ecell = InputBox("終了")   Sheets(SheetNm).Select   Range(Scell & ":" & Ecell).Select End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

VBAの基本のことです。 ブックーシートーRange(セル範囲)-Select を並べて書くだけで良い。 ブックはActiveWorkbookが仮定されるので省略可能。 シートはSSheets("シート名文字列") RasngeはRange("セル範囲文字列") シート名文字列,セル範囲文字列は変数に入っていても良い。 ーーー 難しいことを覚えるより下記が参考になると思う。 Sub test01() Dim rng As Range sn = InputBox("シート名") Sheets(sn).Activate Set rng = Application.InputBox(prompt:="範囲", Type:=8) rng.Select End Sub ーー Application.InputBoxではマウスで範囲指定できる。ここがメリット。 Ctrlキーを押しつつ、飛び飛びのセル範囲も指定出来る。 入力してシート名を確定して、そのシートを、範囲を聞く前にアクチベイトする。 rngではシートの特定(指定したシート)も含めて範囲が確定する。だからSheets(sn).rng.Select とはしない。 === >ボタンを押したらA1からD10までのセルが選択されることです なら ボタンとは何?ボタンは必要ない。 範囲が指定の都度変動するかどうか、質問に帷幄べきだ。1回限りなら Sub test02() Sheets("Sheet1").Activate Sheets("Sheet1").Range("A1:D10").Select End Sub A1:D10が変数にあるなら Sub test03() Sheets("Sheet1").Select rng = "A1:D10" Range(rng).Select End Sub が参考になるだろう。 参考 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html http://oshiete1.goo.ne.jp/qa3578579.html

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

>を入力して、ボタンを押したらA1からD10までのセルが選択    A    B  C 1 シート名 開始 終了 2 Sheet1  A1  D10 この様な形で入力されているなら Sub Test()   Dim シート名 As String   Dim 開始セル As String   Dim 終了セル As String   シート名 = Range("A2").Value   開始セル = Range("B2").Value   終了セル = Range("C2").Value   Application.Goto Reference:=Worksheets(シート名).Range(開始セル & ":" & 終了セル), Scroll:=True End Sub

limilan092
質問者

お礼

ありがとうございました。勉強になりました。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

簡単です。 Excel を起動し、メニューバーにて以下の操作 ツール/マクロ/新しいマクロの記録 マクロの記録が開始されます。 後はシート→ sheet1 をクリック セル A1~D10 をドラッグ マクロの記録のボタン→ 停止を押すだけ これでマクロが記録されます 次にボタンを配置します。 メニューバーにVisual basic のツールバーを表示させます。 表示/ツールバー を開き「Visual basic」にチェックしてください。 Visual basic のツールバー 「デザインモード」のボタンをクリック Visual basic のツールバー より「コントロールツールボックス」 をクリック  Excel の画面上に「コントロールツールボックス」が表示されます。 その中から「コマンドボタン」を選択(クリック)を シート上の 適当な場所にマウス左クリックしたままドラッグ 手を離すとボタンが配置されます。 配置したボタンをダブルクリックすると VBAの画面が表示されます。 これは Shhet1 のVBAに配置されています。 ______________ Private Sub CommandButton1_Click() End Sub _______________________________ ここに以下の記録したマクロを呼び出す記述を追加します。 先ほどの記録したマクロは 標準モジュール/Module1 という場所に記録されています。 _____________________________________ Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/12/17 ユーザー名 : NOBU ' ' Range("A1:D10").Select End Sub ___________________________________________________ で話を元に戻して コマンドボタンの処理に以下のとおり記述 ____________________________________________________________ ______________ Private Sub CommandButton1_Click() Call Macro1() End Sub _______________________________ これでVBAの側は設定できました。 VBAの画面は閉じてください。 excel のシート1に戻って  Visual basic のツールバー 「デザインモード」のボタンをクリック デザインモードを終了します。 先ほど配置した コマンドボタンをクリックしてください。 記録したマクロが実行されます。

limilan092
質問者

お礼

Call Macro1()

limilan092
質問者

補足

お礼の一覧に間違えて入力してしまいました。本当にすみませんでした。ご親切にありがとうございました。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

A1 に シート名 B1 に 開始 C1 に 終了 -------------------------------- Sub Test()  Sheets(Range("A1").Value).Range(Range("B1").Value, Range("C1").Value).Select End Sub -------------------------------- 以上です。  

関連するQ&A