• ベストアンサー
  • すぐに回答を!

エクセルマクロでの質問です

エクセルマクロで次のような事をしようと思っています。シートAとシートBがあったとします。シートAには2列数十行のリストがあり、コマンドボタンを配置しています。リストの任意のデータを範囲指定して、ボタンを押すと、シートB上にコピーされるといったものです。 そこで分からないのは、範囲指定した状態でコマンドボタンを押した際に、指定した範囲のRangeを取得する方法です。どなたかお分かりの方いらしたら宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数21
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • redfox63
  • ベストアンサー率71% (1325/1856)

Selectionで取れると思いますよ Sub Macro1   dim r as range   on error resume next   Set r = Selection   on error goto 0   if not r is nothing then     MsgBox r.Address   end if   selection.select End Sub といった具合です

共感・感謝の気持ちを伝えよう!

質問者からのお礼

なるほどー。参考にさえていただきます。ありがとうございました。

関連するQ&A

  • エクセル マクロで可能!?

    エクセルで個人データを管理しています。マクロでできるのかわかりませんが、できるなら挑戦してみようと思い質問しました。 データは、縦に個人別に並べてあります。また1人のデータにつき4行を使って横長にその個人のデータを記入しています。よって左端に名前等の基本データが記入されていています。下のような感じです。 (シート1)  名前A データ ××○○○・・・・・・  名前B データ ×○○×○・・・・・・  名前C データ ○○××○・・・・・・   ・   ・ そこで、ある個人のデータの名前周辺部分を別シートにそのまま同じ形式でコピーをしたいのですが、それをマクロでできないのかなと思い質問しました。下のように全ての人をコピーする必要がないので解らなくなっています。 (シート2)  名前A   名前C  名前G   ・   ・ 考えているのはシート1の各名前の前にコマンドボタンを配置し、それに『指定部分をコピーしてシート2に貼り付け』というマクロを組めばいいのでないかと思っています。しかし、全ての個人をコピーする必要がないため、コピー先の場所をどう指定してやればいいのかがわかりません。コピーをした順番に上から順番に埋まってほしいのです。 以上、どなたかわかる方お願いします。 エクセルを文章で状況説明するのは難しいです…

  • Excelマクロでコピーと貼り付け

    今プログラムを作っていますが、なかなか上手く出来ず困っています。 シートのデータをコピーして別のシートに貼り付ける事は可能でしょうか。 シート内全てのデータという訳ではなく、G列に日付が入っている人のみなど 条件付でマクロを作成のしたいのですが・・・。 具体的に言うと、番号・名前・所属・期間・退職日などが項目になっている表があり 個人別で都度退職日を入力しています。 G列の退職日を入力すると、F列の期間に”退職”と表示されるようにIF関数を使っています。 今回マクロを使いたい部分ですが 退職日が入力されている人のみ別のシートにコピーし貼り付けて まとめておきたいなと思っています。 また、番号・名前・所属・機関・退職日などの項目の表が 所属別にあるので5シート分ぐらいに分かれています。 このような場合は、もしコピー貼り付けがマクロで出来たとして 各シート別にコマンドボタンみたいなものを用意しなければいけないのでしょうか。 それとも、コマンドボタン1回のクリックで全てのシートから 退職日が入力されているデータを参照しコピー貼り付けが出来るのでしょうか。 説明がわかりずらくなってしまい申し訳ありません。 今打ち込んであるプログラムです。 Sub ボタン1_Click() Dim n As Integer For n = 1 To 100 If Worksheets("シート1").Cells(n, 6) = "退職" Then Worksheets("シート1").Range("B3:H100").Copy Destination:=Worksheets("退職者リスト").Range("B4:H100") Else End If Next n End Sub コマンドボタンをクリックすると、コピーは出来ているみたいなのですがシート1全てが退職者リストに貼り付けされてしまいます。 F列が”退職”の人だけ参照させたいのですが・・・。 F列は退職日が入力されると、”勤務継続中”→”退職”と変更になるようIF関数を使っています。 マクロはほとんど初心者ですので、もしよければプログラムをある程度構成して頂けるとすごく助かります。 これを機会に少しずつ勉強していきたいなと思っていますので、簡単な説明もあると尚嬉しいです。 よろしくお願い致します。

  • EXCEL マクロ

    EXCELマクロで教えてください。 コマンドにあるSUM関数をマクロで処理するにはどうしたらよいのでしょう? やりたいことは、指定した範囲をツールバーのΣではなく、ボタン作成・登録の上、合計させたいのです。 よろしくお願いいたします。

  • excel-vbaで作成したマクロを別シートから実行させたい

    excel-vbaでマクロを作成したのですが、以下の2点がわからなくて困っています。 (1)作成したマクロを別のシート(コマンドボタンだけが配置されているシート)から実行させたい (2)コマンドボタンを作成して、ファイルを閉じてしまうと作成したコマンドボタンが消えてしまいます。コマンドボタンを作成したファイルは、常に作成したコマンドボタンを表示させたい よろしくお願いいたします。

  • エクセルのマクロでクリップボードの使い分け。

    マクロ初心者です。任意のシートの任意の列(先に選択しておきます。)とそのシートのA列を特定のシートの2列に並べてコピーしたいのですが、クリップボードを使ってマクロ記録をしても、実行すると貼り付けの段階でエラーが起こります。クリップボードの中身を一つ目のデータ、二つ目のデータというように、選択して貼り付けすることは無理なのでしょうか。あるいは、一つ目のデータをコピー・貼り付けした後、元の任意のシートに戻る方法はないでしょうか。どなたか教えてください。よろしくお願いします。Excel2000を使っています。

  • エクセルでマクロ登録の不具合解消

    エクセルでマクロを作成し 「ツール」→「マクロ」→「実行」 を行うとうまくのですが コマンドボタンを配置して Click イベントに 同じマクロ文を登録してボタンを押すと Cells.Select でエラーが出ます 「実行時エラー '1004'; Range クラスの Select メソッドが失敗しました」 コマンドボタンにマクロを登録する場合 設定か何かあるのでしょうか 誰か 教えてください

  • Excel データの一部を別シートにコピー

    Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。

  • エクセル マクロ コピー→シート保護解除→貼付

    いつもお世話になっております。 マクロ勉強中の者です。 2つの別ブックのシート(互いに任意)を同時に開いている前提での作業です。 (1)あるブックのシート(任意)は,シート保護が施されています。このシートのシート保護の解除をします。 (2)(1)で示したブックとは別のブックのシート(任意)に,次のようなマクロを設定してあり,指定した範囲のコピーを行います。 Sub コピー() コピー Macro Range("E6:AI73").Select Selection.copy End Sub (3)次に,(1)で示したブックのシート(任意)に次のようなマクロを設定してあり,先ほどコピーした内容を貼り付けます。 Sub 貼り付け() Range("E6").Select ActiveSheet.Paste  ActiveSheet.Protect End Sub (4)(1)で示したシートには,(2)で行ったコピーの内容を貼り付け,シート保護された状態で作業が終わります。 この一連の作業の中で,(1)の作業を省けないかと考えています。つまり, 別ブックのシートを2枚開いている状態で, ◎あるブックのシートの内容をコピー(範囲指定あり) →◎別のブックのシートに,シート保護解除して(2)でコピーした内容を貼り付け,(セル指定あり)シート保護して終了 (3)で示したマクロに ActiveSheet.Unprotect を付け加えて実行してみたのですが,うまくいきません。エクセルの性格上,「貼り付け」の前にシート保護解除の動作が入ることで,コピーした内容が失われ?て貼り付けることができないのかな?と感じているのですが,どなたかご教授いただけると嬉しいです。 エクセルのバージョンは,2016になります。

  • Excelのマクロについての質問です。マクロに関しては初心者です。

    Excelのマクロについての質問です。マクロに関しては初心者です。 温度を計測する実験をしています。sheet1に計測している数値が更新されていってどんどん書き込まれている状況です。 Dim fStop As Boolean 'グローバル変数を宣言 Private Sub Command1_Click() ' ' Macro1 Macro ' ' Dim iRows As Integer Dim sRows As String Dim i As Integer Dim tm As Single fStop = Fal For i = 1 To 500 Cells(1, 1) = i tm = Timer() + 5 Do DoEvents Loop While Timer() < tm ' 最終行の調査: iRows = Worksheets("Sheet1").UsedRange.Rows.Count ' 最終行をシート3にコピー Worksheets("Sheet1").Rows(iRows).Copy Destination:=Worksheets("Sheet4").Range("1:1") ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B9").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("C9").Value = Worksheets("Sheet1").Cells(iRows, 4).Value ' CH3 の最新データをシート3にコピー Worksheets("Sheet3").Range("D9").Value = Worksheets("Sheet1").Cells(iRows, 5).Value Next i End Sub Private Sub Command2_Click() fStop = True End Sub 上記のプログラムを作り、sheet1に書き込まれていってる数値の一番新しい数値のみをsheet3の特定のセルの場所に更新されていくように作りました。(コマンドボタン1で計測を開始、コマンドボタン2で計測終了) しかし計測する場所が増えるにつれて下記の部分のプログラムを増やさなければいけません。このプログラムを一まとめにして、指定されたsheet3のセルに書きこまれるようにしたいのですが、どのようなプログラムを加えればいいのでしょうか?Excelのバージョンは2003です。 ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B9").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("C9").Value = Worksheets("Sheet1").Cells(iRows, 4).Value ' CH3 の最新データをシート3にコピー Worksheets("Sheet3").Range("D9").Value = Worksheets("Sheet1").Cells(iRows, 5).Value

  • EXCELのマクロでデータをクリアしたい

    仕事でエクセルのマクロを使ってリストを作る作業があるのですが、行き詰まりました。どなたか助けて下さい。お願いします。 表を作るのには二つのマクロを使っています。 【一つめのマクロ】 1.定形のウェブページからテキストをコピーする    内容は商品名や商品番号や数量です 2.エクセルの一番左上に貼り付ける 3.するとマクロが働いて貼り付けたデータはseet1に保存されて自動的に新しいシートが用意される 4.新しいシートに別のデータで1.2.を繰り返す この作業は9回まで繰り返し、一旦エクセルを閉じます。 次に再びエクセルで 【二つ目のマクロ】を立ち上げ、現れた『リスト作成』ボタンを押すと自動的に完成の表が作られます。 最初はこの方法で快調だったのですが、行き詰まりました。 ・行き詰まりその1 一つめのマクロで九つまでコピーペーストするのをくり返して、二つ目のマクロを使うと今までのデータをすべて反映して表が作られてしまいます。うまく説明できないのですが、例えば 月曜にコピーペーストして表完成。 火曜に別のデータでコピーペーストして表を完成させると、必要ない月曜のデータも含めて表が出来てしまう。 これが一つめの困りです。 ・行き詰まりその2 二つ目の困りは、ある日別の社員が一つめのマクロを使ってコピーペーストしていたところ、誤って9つ以上シートを作ってしまったらしく、作りすぎたシートを削除しました。 そうしたらフリーズしたので、再起動してやり直ししたら、そのマクロのファイルを開くたびに、上記の失敗が現れてそれ以上のデータが作ることができなくなりました。(2つめのマクロを動かすと失敗データが上書きされるのみです) 快調な時は表が完成すると、一つめのマクロでは何のデータも残りませんでした。 このような稚拙な説明しか出来ないのですが、どなたかご教授下さい