• ベストアンサー

EXCEL VBA で指定した範囲に入力があるかどうか?

こんばんは!! EXCEL VBAを使い出して、初日からつまずいてます・・・。 みなさん、アドバイスよろしくお願いします!! で、早速、質問なんですけど、 指定したセル範囲のいずれかに入力があるか調べたいんですけど、それができるプロパティとかってあるんでしょうか? 地道にセル毎にチェックするしかないいんでしょうか?? たとえば、範囲をA1:H1として、その範囲内のセルに何か入力があったらTrueが返ってくるとか・・・。 もし、知ってる方がいらっしゃたら教えてください!! よろしくお願いします!!!!!

  • reira
  • お礼率58% (21/36)

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>これは、まず範囲を選択して、入力チェック()を呼ぶことなのでしょうか 書いたモジュールは範囲が指定してあります。("A1:H11"は間違いです。質問からすると"A1:H1"です)何もしないで入力チェックを実行します。 モジュールを CountA(Selecton) に変えれば任意の選択範囲がチェックの対象になります。任意の範囲を選択して実行します。 メッセージは確認するためで、IF ・・・・ で入力有無が判定できます。 >ワークシート関数CountAってどうやったら出てくるんですか?? ついApplicationと書いてしまうんですが、『WorksheetFunction.』と打てば、候補の関数名が表示されると思います。 下記の fnc入力チェック は入力有無を返すユーザー定義関数です。 書き方の例です。分かりやすくなった?この例は引数に"A1:H1"をセットしています。任意の範囲にするには Selection.Address に変えます。 Sub 入力チェック()   Dim 入力有無フラグ As Boolean        '入力有無の答え   入力有無フラグ = fnc入力チェック("A1:H1")  'モジュール内でA1~H1を指定(固定)   MsgBox 入力有無フラグ            '帰ってきた答えをメッセージボックスで確認 End Sub '入力有無を返すユーザー定義関数 Function fnc入力チェック(checkAddress As String)   If WorksheetFunction.CountA(Range(checkAddress)) > 0 Then     fnc入力チェック = True   Else     fnc入力チェック = False   End If End Function

reira
質問者

お礼

詳しい説明どうもありがとうございます!! おかげさまで、うまくチェックできました(^-^) なにぶん初心者なもので、またつまずいちゃったら質問にきますので、 その時はまた、どうぞよろしくお願いします~m(__)m ありがとうございました!

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

地道というか、指定範囲の入力個数を調べてみました。 Range("A1:H11") を Selection に変えれば、選択した範囲のチェックができます。 Sub 入力チェック()   'ワークシート関数CountAで指定範囲の入力個数をカウントする   '数値入力か文字入力のどちらか不明なためCountAで判定。入力があれば、Ifの判別式はTrue   If Application.CountA(Range("A1:H11")) > 0 Then     '入力があればTrueでこのメッセージがでます     MsgBox "入力があります!"   Else     '入力がなければFalseでこのメッセージがでます     MsgBox "入力はありません"   End If End Sub

reira
質問者

補足

早速のお返事、ありがとうございます。 これは、まず範囲を選択して、入力チェック()を呼ぶということなのでしょうか?? それから、ワークシート関数CountAってどうやったらでてくるんですか?? ちなみに入力は、数値入力でも文字入力でも構いません。 範囲内にとりあえず何か入ってたらTrueでいいです。 すいません・・・。 nishi6さんのお時間が空いている時があったら、またよろしくお願いします。

関連するQ&A

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • エクセル VBA 範囲指定方法

    エクセルVBA初心者です。 以下の範囲指定について教えてください。 一つの表のK列の一番下のセル(不定)を選択→Range("K65536").End(xlUp).Select その選択されたセルからA3(固定)まで範囲を選択したいのですが、不定セル:固定セル の範囲指定方法が分かりません。 よろしくお願いいたします。

  • Excelで指定した範囲内に値を一定数配置したい

    皆様、お力を貸して下さい。 Excelにて、指定した範囲内に値を一定数配置したいです。 例えば、A1からC50までの範囲に、"1"という値を、全部で8個セルに入力したいです。 どの場所に入れるかはランダムに指定したいです。 VBAを使用しなくてはいけないんだと思っていますが、 ランダムにセルを指定する部分がよくわかりません。 どなたか教えていただけないでしょうか?

  • ExcelのVBAで複数の範囲を指定したいのですが

     ExcelのVBAの全くの初心者です。(PC全般については、多少はわかるつもりですが)  R1C1参照という形式を使って、複数のセル範囲を色付けするため指定するにはどのようにすれば良いのでしょうか?  例えば、アクティブセルにA25が指定されていて、A4~C7とE4~F10とI4~I8までを色付けしたいなどという場合。  色付けなどは、わかるのですが、複数の範囲指定がわからないのです。よろしくお願いします。

  • エクセル・マクロ(VBA)で、指定範囲を保存したい。

    エクセルマクロ(VBA)で、セル範囲を指定してその指定した部分だけをファイルに保存したいのですが、どのようにしたらよろしいのでしょうか?

  • EXCEL VBAでのセル高の範囲指定コピーについて

    いつも活用させて頂いております。 ExcelのVBAで、範囲指定したセルのコピーを行い、コピー先のセルに コピー元のセルの高さをコピーさせるロジックを組みました。 始めは、範囲指定してセル高もコピーしようとしたのですが、 上手く行かなかったので、現在は、ループさせて1行ずつ行っています。 できれば、範囲指定して一括で行いたいのですが、 そのような事は可能なのでしょうか? ご教授願います。

  • セル範囲と図形を指定してVBAで削除するには?

    エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

  • エクセルの範囲指定

    セルの範囲指定で、例えば、「=average(A1:C30)」という計算式を入れるとします。 そこに、もう1つセルを足す場合は、「,F1」を足して、「=average(A1:C30,F1)」と すると思うのですが、その逆は無いのでしょうか? 「A1:C30」という範囲指定の中の「B20」というセルは省いて範囲指定したい場合は、 なにかいい手が無いでしょうか? エクセルにはそんな考え方はありませんか? どなたかよろしくご教授ください!!

  • VBAでのセル範囲指定について

    お世話になります。 私が分からないのは、VBAでのセル範囲指定なのですが、 例えば、シートにデータが有、そのデータの1行目は見出しなので 2行目からデータが入っているセルまでの範囲を指定、コピーして 隣のシートに貼付したいのですが、そのデータの入力される範囲が 毎回違います。「CurrentRegion.Select」としてしまうと、1行目 の見出しまでも範囲指定されてしますので、どうやったら良いのか どなたかお教え頂きたく宜しくお願い申し上げます。

  • Excel セル範囲指定

    Excel VBA で、オフセット先のセルと一つ右のセルとを範囲指定する記述方法を教えて下さい。よろしくお願いします。 Range("????????????????").Select

専門家に質問してみよう