• ベストアンサー

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

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

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

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

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 といった具合です

pallet0310
質問者

お礼

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

関連するQ&A

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

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

  • エクセルマクロでコピーの質問です。

    エクセルマクロでコピーの質問です。 こんにちわ^^; よくわからないエラーが起こっているため困っています。 1.xlsという別のエクセルを開いて指定のセルをコピーし、貼り付けるということで下記のマクロを作ってみました。 ちなみにマクロを書いたファイルはsum.xlsで、1.xlsのコピーしたいセルには数値のみ入っています(書式は会計)。 Sub before() Workbooks.Open Filename:="c:¥aaa¥1.xls" Range("a1:a5").Copy ActiveWindow.Close Range("a1").PasteSpecial End Sub しかし、このマクロをThisWorkbookに貼り付けると文字列として保存されてしまいます。 そこで最後の行を Range("a1").PasteSpecial Paste:=xlValues にするとエラー400が出ます。 一応、sheet1(sheet1)に貼り付けて実行してみたところ、コピー自体ができませんでした。 まだ余りエクセルマクロを理解していないため、なぜなのかが良くわからないのでアドバイスをお願いいたします。 ちなみに使っているのはoffice2003のエクセルです。

  • 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

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • エクセルのマクロについて

    エクセル97でマクロを組んで下記作業を行いたいと考えていますが(実際にやりたい事から抜粋した内容です)、不具合が起こっています。 ~やりたい事~ コマンドボタンを押すとあるシートのセルをコピーして、違うシートに貼り付ける。 ~不具合内容~ (1)普通にマクロを実行すると問題ないが、(2)コマンドボタンを使用するとエラーが起こる。 エラー内容は、 「実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。」 と言う内容です。 ~(1)のVB表記~ Sub Macro1() Sheets("sheet1").Select Range("A1").Select Selection.Copy Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~(2)のVB表記~ Private Sub CommandButton1_Click() Sheets("sheet1").Select Range("A1").Select (←ここでエラーが発生します) Selection.Copy  Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~質問事項~ 1)(2)の表記の何が原因でエラーが起こっているのでしょうか? 2)エラーが起きない為にはどのようにしたら良いでしょうか?

  • エクセル マクロ 時間

    1)フォームにて時間を表示する。コンボボックス2つ作る。コマンドボタン(記録)を1つ作る。 2)1つのコンボボックスには時を選択させる。リストはリストはSheet2に01・02・03・・・とA列に00まで作る。 3)もう1つのコンボボックスには分を選択させる。リストはSheet2に01・02・03・・・とB列に00まで作る。 4)フォームの記録ボタンを押すと、sheet1のA2に(例 23:34)と表示させたい。 マクロの記述を教えてください。

  • エクセルで簡単なマクロを組んだのですが…。

    連続印刷を行う簡単なマクロを組んだのですが、指定行を変更しても1行目からまた印刷されてしまうのですがどうしてでしょうか?ちなみにこんなマクロです。 'リストを1行1枚の伝票形式で印刷するマクロ Sub 個票発行() Worksheets("個票").Activate Dim 個票カウンタ As Integer For 個票カウンタ = 1 To _ Application.WorksheetFunction.CountA(Worksheets("一覧表").Range("A1:A88")) Range("B1") = 個票カウンタ 印刷 Next 個票カウンタ End Sub よろしくお願いいたします。マクロ初心者です。

  • エクセル マクロ 行

    エクセル マクロについて Sheet1にはボタンがあり そのボタンをクリックすると フォームが表示してそのテキストに記入して、記録ボタンを押すと Sheet1最終行のフォームからシートにコピーするボタン方法は出来るのですが・・それだと最終行が新しい記載になってしまいます。 Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 例えば A1 タイトル A2  小項目 A3  挿入させたい! A列の3行目から挿入して、その後も常にA3から挿入したいです。 新しい記載は常にA3にさせたいのですが、どうすれば良いのでしょうか?記述を教えて下さい。

  • Excelのマクロについて質問です

    Excelのマクロについて質問です 2行置き毎に範囲指定した場所の行に色をつけるというマクロを考えているのですが、どのように行数を認識させて動かせばいいのか難しくて中々思いつきません 仮にA列~K列 50行から~終わりまでを範囲指定した場合に以下のようにしたいのですがよければご助言、こういうマクロにすればいいかも?と教えてくださると助かります 条件書式の場合ではきまった行にしか色をぬれなかったので無理でした。 A K 50 -------------------------------- 51 -------------------------------- 52 色なし 53 色なし 54 -------------------------------- 55 -------------------------------- 56 色なし 57 色なし 以下指定範囲まで繰り返し 条件 範囲は不規則 開始の2行を色なしスタート、色有りスタートのどちらでも問題ありません (2行色を塗って、2行色をなし、を繰り返したいだけなので) 偶数行、奇数行関係なく最初の2行から綺麗に始まれる様にしたいです このマクロを動かす際のユーザーフォームボタンは用意してあるのですが、その際に色を指定して動かす事ができるのでしょうか? 色々質問内容が多いですが、何卒お願いします。

  • エクセルマクロ セルの貼り付けについて

    マクロ初心者でわからないことばかりで困っております。 For i = 1 To 721 Step 80 Sheets("Sheet2").Activate Range("G3").Select ActiveCell.FormulaR1C1 = i Range("A1:D80").Select   Selection.Copy Sheets("Sheet3").Activate このあとにコピーしたもの「Range("A1:D80").Select」をセルに貼り付ける時に一回ごとに80行ずつずらして貼り付けたいのですが、そのような場合は どのようにRange指定して貼り付ければよろしいのですか? sheet2で演算した結果をsheet3のセルA1からA721まで貼り付けたいのです。一回の演算で80行まで計算されます。 わかりずらくて申し訳ありません。

専門家に質問してみよう