• ベストアンサー

[Excel VBA] selectionとselectはどのように違うのですか?

selectionオブジェクトは、selectされたオブジェクトを表すときに 使用するのですか? 使用するときの違いがわかりません。 よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 返事が遅くなってすみません。ちょっと、面倒なことをしていたので……。 >selectionは、セル範囲の取得だけにしか使用できず、他の >オブジェクトは使えないですね? いいえ、マウスで選択するもので、ワークシートの中のものなら、ほとんどです。 一つだけできないのは、コントロールツールのオブジェクトですね。 ためしに、 MsgBox TypeName(Selection) として、マクロを動かしてみてください。 Range やら、ChartArea とか、いろいろ出てくるはずです。つまり、それが取得したオブジェクトですから、その後は、いろいろ加工することが出来ます。ただし、ChartArea などは、ちょっと面倒だから、そのまま、ActiveChart と切り替えたほうが楽です。

o-jon
質問者

お礼

ありがとうございました。 また、よろしくお願いいたします。 追伸:マクロボタンの問題は解決しました。

o-jon
質問者

補足

早速のご回答ありがとうございました。 少し理解できました。 ところで、たまたまマクロコードを編集していたとき、マクロ文を 1行削除したせかいかどうかわかりませんが、通常、マクロ記録を するとき、記録終了ボタンが小さく表示されると思いますが、 記録開始と同時にメニューの中に入ってしまったのですが、 どのように表示可能したらいいですか? Excel2003です。 申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 selectionオブジェクトは、selectされたオブジェクトを表すときに使用するのですか? その通りです。 言葉で考えるよりも、やってみたほうが早いです。 Sub Test1()  Range("A1:A10").Select '範囲を取得するという、行為=メソッド  Selection.Interior.ColorIndex = 34 '取得した範囲 =Range End Sub ということです。 しかし、マウスで範囲をとっても、それは、Selection です。 マウスで、範囲を選択したまま、以下コードを働かせれば、色は変わります。 Sub Test2()  Selection.Interior.ColorIndex = 34 '選択した範囲 End Sub

o-jon
質問者

お礼

ありがとうございました。 また、よろしくお願いいたします。

o-jon
質問者

補足

早速のレスありがとうございました。 selectionは、セル範囲の取得だけにしか使用できず、他の オブジェクトは使えないですね?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SelectionとSelectについて?(エクセルVBA)

    任意に範囲選択したセルのうち数式が定義されているセルのみを選択するマクロについて教えてください。 次のようにコードを書いて Sub TEST() ' MsgBox Selection.Address Selection.SpecialCells(xlCellTypeFormulas).Select End Sub 任意の複数のセルに数式を定義します。(配置はばらばらでも構いません) あるセル範囲を選択して上のコードを実行すると、次のような動作になります。 数式を定義したセル(以降、数式セル)を1つ以上と、数式の定義に関わらず別の1つ以上を含むセル範囲を選択した場合は、希望通りに数式セルが選択されます。 しかし、数式セルを一つだけ選択してコードを実行すると、シート全体で数式セルが選択されてしまいます。 ヘルプをみると、Selectionには、セルを選択しているときは、Range オブジェクトが返されます。とあり、SpecialCellsには、オブジェクトを返すメソッドです。指定された条件を満たしているすべてのセル (Range オブジェクト) を返します。とあります。 素人的には、Selection プロパティで返されるオブジェクトの種類は、何を選択するかによって異なります。の部分で、返されるオブジェクトが一つのセルを選択した場合は、オブジェクトがシートになってしまっているからだと推測します。しかし、複数のセルを結合したセルに数式を定義した場合で、一つの数式結合セルを選択して、MsgBox Selection.Addressと表示させると、Selectionは、複数のセルからなるセル範囲を返している様なメッセージが表示されるのに、次の行では、同じくシート全体が選択されてしまいます。 回避する方法ってないのでしょうか?教えて頂けないでしょうか?宜しくお願い致します。 また、説明が悪くてすみません。

  • 図形 Selectionが省略できない VBA

    「タイトル」という名の図形はシート上に存在するのですが、 Sub a() ActiveSheet.Shapes.Range(Array("タイトル")).ShapeRange.Height = 110 End Sub Sub b() ActiveSheet.Shapes.Range(Array("タイトル")).Select Selection.ShapeRange.Height = 110 End Sub aだとエラーになりますが、 bだと正常に動きます。 SelectやSelectionは省略できるものだと思ってるのですが なぜaだとエラーになるのでしょうか? 一度図形をアクティブにする動作が必要なのですか?

  • Excel Selectは使わない? VBA

    おはようございます。 ExcelのVBAを独学しております。 いまさらな質問だとは思いますが、 そこで、色々調べていたところ 「Select」はあまり使うな! ということが良く出てきました。 selectを使わず、上手くシート移動などができるのでしょうか? 私が組んでいるものは、色んなシートを切り替えなければならなく、 毎回Selectしています。 Activateを使ったこともありますが、 エラーが多発し、良く分からなかったためSelectを使用しています。 出来れば、シートをアクティブにすることなく 操作ができれば良いのですが・・・ 例)「データ」「コピー」のシートがあります。 「データ」シートのAからD列を「コピー」シートにコピー しようとするものです。 WorkSheets(データ).select Range("A1").select Range("A:D").select selection.copy Worksheets("コピー").select Range("A1").select ActiveSheet.Paste どうしてもSelectを多様してしまいます。 ●Selectを使わないデータの入力方法 ●Selectを使わず、シートをアクティブにしなくても良い参照方法 ●どうしてもSelectを使わないといけない場面 ●Selectを使うのを回避するためには・・・ などなど、ご存知でしたら回答お願い致します。

  • vba アクティブとセレクトの違い

    シートを選択するには、選択したいWorksheetオブジェクトに対して「Select」メソッドを使います。 (質問)選択すれば、アクティブになりますか。 ならないとしたら、アクティブとセレクトはどのように使い分けるのでしょうか。 よろしくお願いします。

  • Excel2003VBA

    お世話になっております。 手作業マクロの記録で下記作業を行い、一部修正をして一度はうまく動作していたのですが 1点 問題が御座いまして独自に色々試していたのですが、どうにもうまくいかないので どなたかご教授いただけませんでしょうか。 Sub ●●用() ' ' ●●用 Macro ' 12月1月の店舗を抽出し新しいブックに移動する。 ' Selection.AutoFilter Field:=3, Criteria1:="=12月", Operator:=xlOr, _ Criteria2:="=1月" Selection.AutoFilter Field:=8, Criteria1:="(店名)" Range("A4:W2076").Select Selection.Copy Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False Worksheets("Sheet1").Select Worksheets("Sheet1").Move Workbooks("営業部まとめ.xls").Sheets("全件表示").Activate Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=8 Range("A5").Select ActiveWorkbook.Save End Sub まず、 >Worksheets("Sheet1").Move ここだけあれば >Worksheets("Sheet1").Select こっちは必要ないでしょうか? あと、上記の中で > Worksheets("Sheet1").Select この部分なのですが、毎回「Sheet1」とは限らないので「アクティブシート」にしたいと思い色々試してみましたが 全てエラーとなり、結局元にもどしてしまいました。 > Worksheets("Sheet1").Move あと出来ればこれも移動させた後でデスクトップに名前を付けて保存までしたいのですが どのようなコードを追加すればよろしいでしょうか。 宜しくお願い致します。

  • VBAのSelectionプロパティについて。

    単語を分類するプロシージャを作成しています。 ソースは下記の通りです。 Private Sub Distribute() Dim NumRows(100) As Long 'wsRDの行列 インデックス番号は列を示す Dim NumColumns As Long 'wsRDの行列 Dim Flag As Boolean '品詞が存在するかを示すフラグ Dim fName As String 'ファイル名 Dim Row As Long 'wsRDの行 Dim Word As Long 'wsのキーワード <<中略>> '読み込まれたファイルのワークシート1のアドレスを代入 '//列Aから列Fの範囲にについて情報をキーとして昇順に並べ替え開始 wsData.Columns("A:F").Select '範囲指定 Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal '//列Akara列Fの範囲にについて情報をキーとして昇順に並べ替え終了 <<中略>> End Sub Selection.Sort Key1の部分でエラーが出てきてしまいます(エラー1004:アプリケーション定義またはオブジェクト定義エラー)。 今現在、Exsel2000を使用しているのですが、プログラムを書く際は2002の本を参照しています。そのためバージョンが違う所為かとも思っているのですが・・・。 もしわかる方がいたら教えてください。

  • EXCEL VBA

    まことに幼稚な質問で申し訳ないが、バックに合って困っています。 どなたか教えていただけませんか?PCの先生はソフトのバグ!ではないかと云っています。 QT Sub データを作業場に1A() Sheets("データ").Select Range("A1:AB2000").Select  Selection.Copy  Sheets("作業場").Select  Range("A1").Select  ActiveSheet.Paste End Sub UQT Selection.Copyのところで”アプリケーション、オブジェクト等の定義エラーとでます。目を皿のようにしても虫はいないと思いますが? SELECTION.CUTの場合は問題ないのですが! 以上よろしくお願いします。  

  • Excel vba selectが効かない

    2と3の2つのエクセルファイルがあります。縦の列を新しいファイルの横の行に コピーしていきたいプログラムです。 2のファイルの1シート目の"C8:C25" 3のファイルの1シート目の"C9:C65" を新しい1のファイルの1シート目の1行目にコピーするプログラムを 作っていますが1シート目はpasteされるのですが 3のファイル2シート目からselectの指定が"C9:C65"ではなく、B9からQ65の指定になってしまい思ったコピーができません(★のところ)、1シート目はうまくいっているのでどうして3のファイルの2シート目のからうまくいかないかわかりません。 5シートまででテストをしているのですが実際は各々255シートありもってくる列も 12列あります。とりあえずCの列だけ5シートで試してみています。 Dim i As Long Dim N As Long i = 1 N = 1 Do While i <= 5 ''C列''' Workbooks(2).Worksheets(i).Activate   '2のファイル Worksheets(i).Range("C8:C25").Select   'もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("C" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True Workbooks(3).Worksheets(i).Activate   '3のファイル Workbooks(3).Worksheets(i).Range("C9:C65").Select  '★もってくるところ Selection.Copy Workbooks(1).Worksheets(1).Activate   '1新しいファイル Range("U" & N).Select   '貼り付けるところ Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=True i=i+1 N=N+1 LOOP

  • excel:vba

    エクセルVBAで、ROWS(“7:7”)からROWS(“93,93”)まで、行の値を+3ずつアップしてあることを繰り返し実行したいのですが、ROWS(“i:i”)とかROWS(i:i)とかは意味をなさないようです。 どのように処理(記述)すればよいのでしょうか。 感覚的には次のような処理したい。 For i = 7 To 93 Step 3 Rows(i:i).Select Selection.Insert Shift:=xlDown Selection.Insert Shift:=xlDown Next i

  • Excel2007 VBAで画像挿入について

    Sub 図形挿入等倍() Dim FilePath As Variant FilePath = Application.GetOpenFilename(",*.png") If Not FilePath = False Then ActiveSheet.Pictures.Insert(FilePath).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Width = Selection.ShapeRange.Width * 1# Selection.ShapeRange.Left = ActiveCell.Left + 2.25 Selection.ShapeRange.Top = ActiveCell.Top + 2.25 End If With Selection.ShapeRange.Line .Weight = 2.25 '線の太さを2.25に .ForeColor.RGB = RGB(255, 0, 0) '赤枠に End With End Sub 上記のコードを書き、画像を挿入したときは問題ないのですが 画像を挿入せずにキャンセルすると 実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。とでてしまいます デバックをしてみると With Selection.ShapeRange.Lineの部分が黄色くなっているので ここを修正したらいいと思うのですが どのように修正したらいいのか分かりません お分かりの方いましたらご教授お願い致します

専門家に質問してみよう