• ベストアンサー

ExcelのVBAで特定のセルのみ選択

Excel VBAの初心者です。 数式など入ったセルの選択は Selection.SpecialCells(xlFormulas).Select で、出来ましたが単純にセルの値が「1」などの時に選択するには どうすれば良いでしょうか。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>その他の数字や空白のセルは除外したい場合はSpecialCellsでは無理でしょうか。 SpecialCellsでは、特定の値や、特定の数値(文字)を含んだセルだけを指定する事はできません。 先に示したオプションに従って一括選択する機能しかもっていません。 #2さんが示したように、”検索”で一つずつ探す事になります。 他に、オートフィルタで抽出という方法もありますが、それで無理なら一括して簡単に抽出することは不可能です。

hata779
質問者

お礼

有難うございます! 一括では無理と言うのがわかってスッキリしました。

その他の回答 (2)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

『ワークシート の [検索] ダイアログ で「1」を検索し、[すべて検索(I)] し、すべて選択([Ctrl] + [A])する』イメージ かと存じますが、VBA では Find メソッド で回すのが常套だったような。。。 Dim c As Range Dim firstAddress As String Dim myAdd As String With Selection  Set c = .Find(1, LookIn:=xlValues)  If Not c Is Nothing Then   firstAddress = c.Address   Do    Set c = .FindNext(c)    myAdd = myAdd & " " & c.Address   Loop While Not c Is Nothing And c.Address <> firstAddress   Range(Replace(Trim(myAdd), " ", ",")).Select  End If End With #違ってたら スル~ してください。

hata779
質問者

お礼

ありがとう御座います~ 非常に参考になりました!

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

SpecialCells(xlCellTypeFormulas) を SpecialCells(xlCellTypeConstants) に変更してください。 VBE(編集画面)で、コードの"SpecialCells"の部分にマウスを置いて、F1キーでヘルプが表示されます。 ヘルプ(2002)では、下記のようになっています。 ----------------------------------------------------- SpecialCells メソッド 使用できる定数は、次に示す XlCellType クラスのいずれかです。 xlCellTypeAllFormatConditions 表示形式が設定されているセル xlCellTypeAllValidation 条件の設定が含まれているセル xlCellTypeBlanks 空の文字列 xlCellTypeComments コメントが含まれているセル xlCellTypeConstants 定数が含まれているセル xlCellTypeFormulas 数式が含まれているセル xlCellTypeLastCell 使われたセル範囲内の最後のセル xlCellTypeSameFormatConditions 同じ表示形式が設定されているセル xlCellTypeSameValidation 同じ条件の設定が含まれているセル xlCellTypeVisible すべての可視セル

hata779
質問者

補足

早速のご回答有難うございます。 SpecialCells(xlCellTypeConstants, xlTextValues).Select で設定してみますと文字や数字の入ったセルは選択された のですが、特定の文字(例えば「1」)の入ったセルのみ 選択し、その他の数字や空白のセルは除外したい場合は SpecialCellsでは無理でしょうか。 感覚的に Cell.Value = 1 then Range(Cell).Select (ムチャクチャな構文です) みたいな感じでSheetでセルを指定せずに値が「1」の場合に 選択したいと考えてます。

関連するQ&A

  • エクセルVBAでジャンプ(セル選択)?

    いつもお世話になっております。 エクセル(2000)の特定のセル選択の方法について教えてくださいませ。 Sub TEST01() Range("A1:A20").SpecialCells(xlCellTypeBlanks).Select End Sub これで、指定範囲内の空白セルをSelectできますね。 Sub TEST02() Range("A1:A20").SpecialCells(xlCellTypeFormulas, 1).Select End Sub これで、指定範囲内で、数式により数値が表示されたセルをSelectできますね。 質問1 では、指定範囲内で、数式により何も表示されないセルをSelectできますか? 空の文字列( ="" )だから、SpecialCells(xlCellTypeFormulas, 2)でSelectできますが、これでは他にも数式により文字が表示されたセルもSelectされてしまいます。 質問2 数値がマイナスのものだけをSelectする方法があるでしょうか? 別に、「ジャンプ」にはこだわりませんが、データ件数が多いので For NextでLoop 以外の方法をご教示いただけたら幸いです。

  • EXCEL VBA 空白行を含んだ範囲選択

    EXCEL VBA超初心者です。 EXCELのVBAについての質問です。 以下のような、日ごとのお金の貸付、返済の一覧データがあります。 例 A B C D E 1 年  月 日 貸付  返済 2 2008 5 10 10000 3 2008 6 10      8000 4 2008 7 10 20000 5 2008 8 20      7000 ・データの行数は決まっていません。 ・最後の行が「貸付」で終わることもありますし 例のように「入金」で終わることもあります。 ・各データには必ず「年」「月」「日」が入力してあります。 VBAで、A2セルからE5セルを範囲選択するには どのように記述したらいいですか? ちなみに自分で色々と調べてみて Selection.SpecialCells(xlCellTypeConstants, 23).Select としたのですが それだと空白セル(例でいうとE2やD3セル)が選択されず とびとびになってしまいました。 ご教授お願いいたします!

  • Excel VBA のセル内の選択テキストの読み書きは?

    Excel VBAで、選択されたセルではなくセル内の選択された部分のテキストの読み書きはできるのでしょうか? つまり、選択されたセルのテキストは Selection.Value を使って OldText = Selection.Value Selection.Value = "NewText" と読み書きができますが、セル内で選択されたテキストについてのインターフェイスはあるんでしょうか?

  • 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は、複数のセルからなるセル範囲を返している様なメッセージが表示されるのに、次の行では、同じくシート全体が選択されてしまいます。 回避する方法ってないのでしょうか?教えて頂けないでしょうか?宜しくお願い致します。 また、説明が悪くてすみません。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • Excel VBA セルの選択方法

    こんばんは。 セルの選択方法をお聞きしたいのですが、 SheetAのB2のセルの値を SheetBのリストの最下行(例えば12)からn行目(例えばn=3だったら12行目から15行目)を選択し、SheetAのB2のセルの値を貼り付ける方法を教えてください。 方法は複数あると思うのですが、考えにいきずまってしまいました。 Range("B2").Copy For i = 1 To n Worksheets("Sheet2").Range("b65536").End(xlUp).Offset(1).Select ActiveCell.Parse Selection..Resize(.Rows.Count + [n]).Select それと   Dim cntRow As Integer Dim cntCol As Integer cntRow = Selection.Rows.Count + 1 cntCol = Selection.Columns.Count + 1 Selection.Resize(cntRow, cntCol).Select 上のようなResizeを使って、表(例えばC3~E10)を貼り付けた隣のセル、(例えばB3~B10)のセル番地を取得して、 SheetAのB2のセルの値を貼り付ける方法も教えていただけないでしょうか。 基本的なことをお聞きするようですが、宜しくお願い致します。

  • EXCEL VBAで

    初心者です。 Sub Ksakujyo() Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlUp End Sub これでは対象セルが空白だったら該当するセルが見つかりませんと出ます。 それで If Range Is Nothing Then "対象がありません" End If を間に入れますが多分rangeのところが違うのでしょうね? それとこれは選択範囲を選択してないと全ての行で削除されるみたいです。 かなり調べましたがお手上げです。 どなたかご教授よろしくお願いします。

  • excel vba 選択されたセルの範囲を別のセル

    excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。

  • VBA 表の1つ下のセルを選択する

    EXCEL2003のVBAを使っています。 オートフィルタで抽出させた表があります。 入力されているセルの、1つ下のセルを選択するにはどうしたら良いでしょうか。     A 1  あああ  2  あああ  5  あああ  1行目から19行目までの列の中で、"あああ"だけをオートフィルタで抽出している 10  あああ  14  あああ   16  あああ  20   ※ ←ここを選択したい。 Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select これだとA17のセルが選択されてしまいます。 表全体の1つ下のセルを選択する方法はあるでしょうか?

  • エクセルVBAで空白セルを削除する方法

    みなさん教えてください。 今エクセルVBAで、下記のようにのA列に空白セルがある場合にそのセルを削除し、 空白セルが無い場合何もしないと言うマクロを作っています(下記のように自動記録し ました)。 しかし、作成したマクロは、下記のようにA列に空白セルがない場合はエラーが出てし まいます。 空白セルが無い場合エラーが出ない方法を教えて頂けないでしょうか。 よろしくお願いします。 <マクロ> Sub Macro1() Columns("A:A").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.SpecialCells(xlCellTypeBlanks).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End Sub <データ> A --------- 1 2 1 1 1 3 4 ・ ・ ・ (以降約300行続きます)

専門家に質問してみよう