
ご質問させていただきます。
Sheet1のA2~A1701まで4桁の数字(各行で重複しない4桁の数字です)、
Sheet1のB2~B1701とSheet1のC2~C1701にはDDEで取り込んだリアルタイムデータ、
Sheet1のD2~D1701には、B2~B1701とC2~C1701のリアルタイムデータを使ってIF関数で条件判定をしてYESまたはNOを表示する関数式が入力されています。
やりたいことは、D列の条件判定でYESが表示された場合、YESが表示された行のA列の4桁の数字をポップアップで表示させることです。
このようなことはできるのでしょうか?
メッセージボックスを使えば良いのかもしれませんが、当方VBA初心者のためメッセージボックスの使い方がよく分かりません。
どなたか教えていただけないでしょうか?
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
hoully様
簡単な例で、下のようなものはいかがですか?
YESのたびに止まってしまいますが...
D列の条件判定がリアルタイムなのか、1701個のデータを取った後のバッチなのかわかりませんでした。
質問の意味を取り違えていたらごめんなさい。
Option Explicit
Dim i As Long
Sub 判定()
For i = 2 To 1701
If Cells(i, 4).Value = 1 Then MsgBox Cells(i, 1).Value ' 1 または"YES"
Next i
End Sub
以上
NYAFRAC様
ご回答ありがとうございます。
平日にならないとDDEリンクからリアルタイムデータを入手できないので、明日早速試してみます。
この度は、ありがとうございました。
No.5
- 回答日時:
メッセージボックスを出すと、その間VBAが止まってしまい、DDEのデータ受信にも支障が出るのでは?
下記の様に、メモ帳に追記なら、メモ帳は別のプロセスで動いているので、問題ないかもしれません。
http://oshiete.goo.ne.jp/qa/8084431.html
「YESが表示された場合」が、Worksheet_Changeイベントでは捉えられないらしく、、
Workbook.SetLinkOnData メソッド というのがあるそうですが、使ったことはないので、それ以上は分かりません。
Worksheet_Calculateは動作するかもしれませんが、何処が変わったかが取得出来ないので、今回の例では、D列全体をスキャンしないといけないのは同様です。
http://msdn.microsoft.com/ja-jp/library/office/f …
mitarashi 様
ご回答ありがとうございます。
なるほど、メモ帳という方法もあるのですね。勉強になりました。
平日にならないとDDEリンクからリアルタイムデータを入手できないので、明日早速試してみます。
この度は、ありがとうございました。
No.4
- 回答日時:
MsgBox で表示するだけなら簡単なのですが、1,700 行もあるという点が問題になりそうですね。
1
1,700 回 MsgBox を表示させた場合、ポップアップの度にユーザーが OK して閉じるようになってしまいます。ボタンをクリックか Enter で押すまで、プロシージャが再開しません。
まとめて 1 回で該当データを表示するのは、次の理由で困ってしまうかもしれません。
2-1
改行により MsgBox の枠をはみ出す行数のデータが該当した場合、MsgBox にはスクロールバーがないので、全体を見ることができません。
2-2
改行しなかったとしても、1 バイト文字で約 1,024 文字までという prompt の制限があるので、4 桁の数なのであれば 1024 ÷ 4 = 256 個くらいまでしか表示できず、残りの文字は切れてしまうかと。
以上を考慮すると、そのデータ量で MsgBox というのは、不向きという感想です。
より実用的な代替法としては、例えば、どこかのシートに時刻(Now 関数)と該当データを書き出すなど。これであれば 1,700 行くらい何でもないし、OK ボタンを押すといった操作も不要です。
ただ、リアルタイムで送られてきていても、マクロが動作するときとしないときを If で切り替えられるようにしておくと、便利かもしれませんね。例えばどこかのセルの値とか、ボタン類(コントロール)のオン/オフの状態により、動作を変えるなど。
MarcoRossiItaly様
ご回答ありがとうございます。
なるほど、確かにおっしゃる通りの問題点がありますね。
大変参考になりました。
(コントロール)のオン/オフに関しては、平日にならないとDDEリンクからリアルタイムデータを入手できないので、明日早速試してみます。
この度は、ありがとうございました。
No.2
- 回答日時:
リアルタイムデータが一行ずつ取り込まれ、かつ、取り込まれたときのアクティブセルがその行にあるのでしたら
Private Sub Worksheet_Change(ByVal Target As Range)
'条件によっては
' If 何かしらの条件 Then
' Exit Sub
' End If
'とコードを実行する前に抜けるようにようにするか
'If 変更されたセルの条件 Then '実行する条件を付けておく
If Range("D" & ActiveCell.Row) = "YES" Then
MsgBox Range("A" & ActiveCell.Row).Value
End If
'End If
End Sub
こんな感じでできると思われますが、シートのセルがどこであれ変更されるたびに実行されますので、コメントにしているような条件を付けておいたほうがいいと思います。
kmetu様
ご回答ありがとうございます。
平日にならないとDDEリンクからリアルタイムデータを入手できないので、明日早速試してみます。
この度は、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
エクセルでデータの並び替え
-
エクセルで表の変換
-
エクセルのカウントについて
-
Excelのソート方法(タイトルと...
-
Excelのセル選択範囲の指...
-
エクセル、データ、統合、
-
Excel ピボットテーブル
-
エクセル 重複データの抽出につ...
-
データの一部範囲について、並...
-
Excelでブック間のデータの比較...
-
更新前と更新後の差分をVBAを使...
-
空白セルを検索するときのスピ...
-
エクセル 複数条件
-
Excelの関数に詳しい方、お願い...
-
Excel VBA で、2行1単位のデー...
-
あるexcel表からチェックボック...
-
エクセルで関数を作る
-
エクセルの最小値抽出方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
Excel関数:「0」を除いた標準...
-
値の入っているセルのうち、一...
-
SUMIFで数値が入力されているセ...
-
エクセル、正数のみの集計[(負...
-
ピボットテーブル 0個の行を...
-
エクセルに入力された日付「S40...
-
エクセルで何種類のデータがあ...
-
SUMPRODUCT関数 行が増えても...
-
Excel関数で、範囲内の最後のセ...
-
複数の候補列から、検索値と一...
-
エクセル 8ケタの数字から日数...
-
EXCEL 階段状のグラフ
-
エクセルVBAを使ってセルに日付...
-
Excelのマクロで行を間引きたい
-
エクセル日付 文字列の関数がエ...
-
《エクセル2000》重複している...
-
入力するとかってにセルの色が...
おすすめ情報