[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで変化した値で表示メッセージを変える』(すがやっち)
[マクロで変化したセルの値によって、表示するメッセージを変える方法]
毎度お世話になります。早速質問させていただきます。
少し前に質問させていただいた事と関連しますが、まず以下のマクロ記述をご覧ください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
Application.EnableEvents = False Target.Value = "*" & Target.Value & "*" Application.EnableEvents = True Application.Run "'予算センタ検索システム(9.1現在).xls'!検索" Dim メッセージ As String メッセージ = Range("D7") MsgBox メッセージ & "件のデータがヒットしました!", vbInformation, "検索結果"
End Sub
以上のマクロで、まずC3に検索文字列を入力し、Enterで確定、再度Enterを押す(セルの内容が変わる)とその文字列を含むデータを検索(自動的に、文字列の前後にアスタリスクが付く)します。
※"'予算センタ検索システム(9.1現在).xls'!検索"は、フィルタオプションを使っています。
Range("B9:G4000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("B2:G3"), Unique:=False
D7には、=SUBTOTAL(3,C10:C3871)の数式が設定されており、データの件数を表示します。上のデータの検索に引き続き、マクロによってその結果をウィンドウで表示します(例えば該当するデータが7件だったら、「7件のデータがヒットしました!」と表示される)。
そこで、例えばD7の値が0だった場合、「0件のデータがヒットしました!」と表示されるわけですが、そこを、「該当するデータはありませんでした。」というように、0(ゼロ)の場合だけ表示される内容を変えるようなマクロ記述はどのようにしたらよいか教えていただきたいのです。
他に必要な情報があれば、何でも提供します。よろしくお願いします。
変数「メッセージ」がゼロかどうかを基準にIf構文で処理を分岐させます。 If Val(メッセージ)=0 Then '0件のときのメッセージ Else '0件以外のときのメッセージ End If (KAMIYA)
上記のマクロ操作で検索結果を表示させた後、条件をオールクリアしてデータを全て表示するのに、以下のマクロを使っています。
ActiveSheet.ShowAllData
Range("C3").Select
このマクロは、ボタンに登録してありますが、一度クリックした後、続けて再度クリックすると以下の
実行時エラー '1004':
WorksheetクラスのShowAllDataメソッドが失敗しました。
という、VisualVasicのエラーが表示されてしまいます。
これを表示させないようにする方法はありますでしょうか?これは、一度クリックしたら既に行いたい操作が実現されているために起こるエラーなのでしょうか?
私としては、何度クリックしても「全て表示」されるように(実際は一度のクリックで実現されますが・・・)したいと考えています。すいません、宜しくお願いします。
on error resume next を記述しておくのが、簡単でよいかと思います。
(INA)
on error resume next について、ヘルプをお読み下さい。 意味を調べずにマクロを利用することはお勧めできません。
この記述以降の行は、エラーが発生すると実行されずに無視されます。
(INA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.