こんばんは!!
EXCEL VBAを使い出して、初日からつまずいてます・・・。
みなさん、アドバイスよろしくお願いします!!

で、早速、質問なんですけど、
指定したセル範囲のいずれかに入力があるか調べたいんですけど、それができるプロパティとかってあるんでしょうか?
地道にセル毎にチェックするしかないいんでしょうか??

たとえば、範囲をA1:H1として、その範囲内のセルに何か入力があったらTrueが返ってくるとか・・・。

もし、知ってる方がいらっしゃたら教えてください!!
よろしくお願いします!!!!!

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 1
この回答へのお礼

詳しい説明どうもありがとうございます!!

おかげさまで、うまくチェックできました(^-^)

なにぶん初心者なもので、またつまずいちゃったら質問にきますので、
その時はまた、どうぞよろしくお願いします~m(__)m

ありがとうございました!

お礼日時:2001/12/19 17:20

地道というか、指定範囲の入力個数を調べてみました。


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

この回答への補足

早速のお返事、ありがとうございます。

これは、まず範囲を選択して、入力チェック()を呼ぶということなのでしょうか??
それから、ワークシート関数CountAってどうやったらでてくるんですか??

ちなみに入力は、数値入力でも文字入力でも構いません。
範囲内にとりあえず何か入ってたらTrueでいいです。

すいません・・・。
nishi6さんのお時間が空いている時があったら、またよろしくお願いします。

補足日時:2001/12/19 09:39
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「試験範囲」は英語でなんといいますか?

「試験範囲」は英語でなんといいますか?

どの辞書を調べてもthis test covers pages 30-42 のようにしかのっていません。

学校で試験範囲が書かれたプリントのタイトル部分は、一体どのような表現となるのが、英語圏で一般的なのでしょうか。お教えください。

Aベストアンサー

「範囲」とはちょっとニュアンスが違うのだけれど、試験に出る項目のリストには、"exam objectives" とか"Study guide"等と書かれています。
 
学期を通しての試験範囲や試験の日程が書かれたものは"exam schedule" とか "test schedule" と書かれています。
 
黒板の板書や口頭でテスト範囲を発表する場合は、"Test #3 will cover from chapter 5 to chapter 10."等です。 

Qエクセルの範囲セルの範囲セルについて

ExcelVBAで、ある範囲のセルを基準として、その範囲の中の範囲を表したい
のですが、どうすればよいのでしょうか?

以下のセルで、A1:D2の範囲を使ってA2からD2の範囲を表す方法です。
A1 B1 C1 D1
A2 B2 C2 D2

A2のセルはRange("A1:D2").Cells(2,1)で表すように
Range("A2:D2")でなく、Range("A1:D2")を使ってA2からD2の範囲を表す方法が知りたいです。

Aベストアンサー

こんにちは。
セレクトしたいかどうかはわかりませんが、
こういうことかな?

Range("A1:D2").Rows(2).Select

Q一般に「英語」というときの言葉の概念の範囲について

一般に「英語」というときの言葉の概念の範囲について

日常生活において、「英語」というとき
いわゆる「英語」の他に
慣用的にフランス語やドイツ語などの外国語(特にヨーロッパ圏の言語)のことも含めて
「英語」と呼び慣わす場合があるような気がするのですが。。。

自分の思い過ごしでしょうか?

Aベストアンサー

・・・というよりは、白人が外国語を話していたら、「英語」ときめつけてしまう
風潮がある、ということでしょう。本当はフランス語やドイツ語かもしらないのに。
あるいは、白人が道にまよっていて親切心がある人がつい「英語」で話しかけて
しまうかもしれません。本当は英語は片言で、スペイン語やイタリア語が
自分のことばかもしれないのに。

Qエクセル たとえばA列の値が ○ と成った時 その行のB列のセルに斜め線を入れたいのです

  A    B
  ○   /(書式の罫線の斜線です)
  11       
  ○   /
  12

といった具合にするには どの様なコードを書けばよいのでしょうか
初心者で説明不足の段はお許しください
ご指南お願いいたします

Aベストアンサー

下記のコードを
Sheetのコードモジュールに書いてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Value = "○" Then
With Cells(Target.Row, 2).Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End If
End Sub

Q「実行時エラー 9 インデックスが有効範囲にありません」を英語で連絡したい

VBで作ったソフトで良く出る、
実行時エラー 9 インデックスが有効範囲にありません
というエラーを、開発元に伝えたいのですが、

くだんのソフトがアメリカ製英語ソフトになっています。

アメリカの開発元へ、エラーを伝えてあげたいのですが、
MS日本で翻訳した「実行時エラー 9 インデックスが有効範囲にありません」
というエラーメッセージの、本国英語版メッセージが、どういう文面なのか
わからず困っています。

一応、Microsoft Technetも探してみたのですが、私の力量ではお手上げです。

どなたか英語版の原文エラーメッセージをご存知の方、
または、日本語エラーメッセージの原文対訳サイトをご存知の方、
などいらしてましたら、どうか助けてください。

Aベストアンサー

No.4です。
目的がVisual Basicで
>「実行時エラー 9 インデックスが有効範囲にありません」を英語で連絡したい
なら、どのバージョンでも
Run-time error 9 Subscript out of range
だと思います。

ランタイムがインストールされていなければ、Visual Basicは実行できないと思います。
そのプログラムのインストール時かそれ以前にインストールされていると思います。

Qセル範囲の取得

エクセルの名前ボックスでセルA1からA10までの範囲に名前をつけた場合、この名前をVBAマクロに用いてA1とA10の行番号を取得することは可能でしょうか?
よろしくお願いします。

Aベストアンサー

Sub try()

Range("A1:A10").Name = "TRY" '名前設定

MsgBox "アドレス:" & Range("TRY").Address
MsgBox "セルA1の行番号:" & Range("TRY").Item(1).Row
MsgBox "セルA10の行番号:" & Range("TRY").Item(Range("TRY").Rows.Count).Row
End Sub

こうゆう感じのこと?

Q英語とスペイン語は現在完了形の守備範囲が違いますか?

たった今話し相手が言ったことを聞き取れなかったとき、What did you say? と[過去形で]聞き返すのが、英語。
Que has dicho? と[現在完了形]で聞き返すのが、スペイン語。このように観察しました。もっとアカデミックな?言い方で説明すると、どんな風に言えますか?英語とスペイン語では現在完了形の守備範囲が違うのでしょうか?

Aベストアンサー

守備範囲は基本的には同じで、どちらも完了、結果、経験、継続を表すのに現在完了形を使います。
スペイン語の方が、過去形、現在完了形の区別を話し手の感情に依存しており、英語よりも用法がフレキシブルです。

例えばスペイン語では極端な話、5年前に起こった出来事を描写する文に現在完了を用いても間違いにはなりません。
分かり易い例を挙げると
Mi abuelo ha muerto hace cinco anos.
など。話し手が今でもおじいさんが亡くなった事を引きずっているんですね。
単純に事実を描写する場合は Mi abuelo murio hace cinco anos. です。

余談ですが、スペインのガリシア地方ではガリシア語に現在完了形が存在しないため
他の地域で完了形を用いる文にも過去形を用いる傾向が強いです。

それに比べると英語の完了形は時を表す副詞(句)によって過去形、現在完了形が明確に分かれています。
現在完了形は明確に過去を表す語句、Yesterdayとか、five years ago等と一緒には使えません。
現在を含む副詞(句)、today、this morning 等は現在完了形を使います。
但し、最近の過去の一時点を表す場合には過去形を用います。

ご質問の What did you say? が What have you said? とならないのは上記の「最近の過去の一時点を表す」場合にあたるのではないでしょうか。

守備範囲は基本的には同じで、どちらも完了、結果、経験、継続を表すのに現在完了形を使います。
スペイン語の方が、過去形、現在完了形の区別を話し手の感情に依存しており、英語よりも用法がフレキシブルです。

例えばスペイン語では極端な話、5年前に起こった出来事を描写する文に現在完了を用いても間違いにはなりません。
分かり易い例を挙げると
Mi abuelo ha muerto hace cinco anos.
など。話し手が今でもおじいさんが亡くなった事を引きずっているんですね。
単純に事実を描写する場合は Mi a...続きを読む

QVBAでセルの範囲指定

お世話になります。
下記の様に1回セルを指定範囲した後に、列を2列マイナス
する場合の記述方法をお教え下さい。宜しくお願いします。

     記

range("a1").currentregion.select

Aベストアンサー

 
>列を2列マイナス

これ2つの解釈ができますよね。(^^;;;

例えば、CurrentRegionで、A~G列が選択された場合

(1)前2列(A,B列)を解除して、C~Gを再選択

Range("A1").CurrentRegion.Select
Selection.Offset(, 2).Resize(, Selection.Columns.Count - 2).Select

(2)後ろ2列(F,G列)を解除して、A~Eを再選択

Range("A1").CurrentRegion.Select
Selection.Resize(, Selection.Columns.Count - 2).Select


それから、
CurrentRegionで選択された列が3列以上でなかったときのチェックも必要になるでしょう。
 

Q「できる範囲でお手伝いします」を英語で

こんにちは。

「私のできる範囲で助けます」
「私の知ってる範囲で助けます」
みたいな言い方は、英語ではどういいますか?
I do help you as I can. とかでいいんでしょうか?
よろしくお願いします。

Aベストアンサー

I'll help you as much as I can.

<参考>
http://tatoeba.org/eng/sentences/show/464753

QExcel VBAでのセルの範囲指定

Excel2000
Win2000です。

あるbook「A.xls」にある表「a」を「B.xls」にコピペ&行列反転するマクロを作っています。

A.xlsの表「a」のサイズが作成の都度変わるため、
B.xlsからサイズの取得をする為、


Workbooks.Open Filename:="A.XLS"

I1 = 1 ' 行数の取得
DO WHILE CELLS(I1,1).VALUE <> ""
 I1 = I1 + 1
LOOP

I2 = 1 '列数の取得
DO WHILE CELLS(1,I2).VALUE <> ""
 I2 = I2 + 1
LOOP

として、行と列の数を取得しています。

で、ここまで来てセルの範囲をどうやって指定していいのか分からなくなりました。

例えば、I2の値をExcelの列のアルファベット表記に変える等、
なにかいい方法はありませんか??

Aベストアンサー

う~ん。

列のアルファベットですか…。A~Zなのでchr関数で、数値を文字に変換すれば出来そうですね。

例えば、I2の値が1だったら(Aの値は65)CHR(64+I2)とすれば、”A”の文字が取得できます。
I2の値が26を超える場合は、数値を26で割って上位一桁と下位一桁で別々に文字を作る用にすれば、できるでしょう。

でも、range関数でこういう指定が出来ますが、こっちの方が簡単ですよ。

range(cells(1,1),cells(I1,I2)).・・・

で記述できますよ。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報