[[20150928171731]] 『VBAである条件をクリアした場合のみ、WAVの音源と』(Decoy) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAである条件をクリアした場合のみ、WAVの音源とOKの文字をだしたい』(Decoy)

初めてご質問させて頂きます。
Decoyと申します。

下記のVBAをエクセルに入れたいと思っているのですが全く構築方法が分かりません。。。
そんな中このサイトを発見し、藁にもすがる思いで投稿させて頂きました。
ご教授いただけますと幸いで御座います。

エクセルのVBAで、B9の値がC9より低く、かつC9のセルとD9のセルの値が同じ場合のときに、F10にOKの赤文字を表示し、任意のWAV音源の音が鳴る。

B10の値がC9より低く、C10のセルとD10のセルが同じ値の時に、、、、、、

(続いていきます)

このような仕様のVBAを作りたいのですが、当方パソコンにめっぽう弱く、参考書片手に作成しているのですが全く理解できずに進んでいないのが原状です。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 >(続いていきます) 

 これが気になりますね。

 条件が排他的でなかったら、wavファイルの再生はどうするんだろう??と
 おもいます。
(カリーニン) 2015/09/28(月) 17:33

 WAV再生がBeep音のような注意喚起の意味だったら、
 VBAでなくても条件付き書式でもいいような気がします。
(カリーニン) 2015/09/28(月) 17:40

ご回答有難うございます!
もしBeep音にした場合、条件付書式だけで記載した内容のエクセルは製作可能なのでしょうか?
(Decoy) 2015/09/28(月) 18:02

当方が少々難聴になってきたため、後々のことを考えるとBeep音よりも
いいかなと思いWAVを使用することにしておりました。

現状Beep音も聞こえないことは無いのですが。。。。
(Decoy) 2015/09/28(月) 18:05


 誤解を与える書き方でした。

 条件付き書式でBeep音を鳴らすことは出来ないと思います。
 セルのフォントや背景の色を変えたり、罫線を付けたりすること
 ができます。

 Beep音やwav再生はVBAになります。
(カリーニン) 2015/09/28(月) 18:27

ご回答有難う御座います!

どうしても音は必要ですので、やはりVBAで製作致します。
(Decoy) 2015/09/28(月) 18:34


 条件分岐の参考HPです。

http://home.att.ne.jp/zeta/gen/excel/c04p20.htm

 セルの値による条件分岐の参考HPです。

http://amaotolog.com/excel/47
(カリーニン) 2015/09/28(月) 18:41


 wav再生はどのようなものですか?短くすぐに終了するものですか?
 長くいものですか?長いものでしたら、途中で終了させたい場合がありますか?
 終わるまで再生しますか?

 ↓はどうでですか?

 >条件が排他的でなかったら、wavファイルの再生はどうするんだろう??と
 >おもいます。
(カリーニン) 2015/09/28(月) 18:46

 9行目以下のB,C,D列のセルが変更になれば、その時点で実行します。
 とりあえずビープ音です。

 シートのシートタブを右クリック、コードの表示を選んで出てきたところに以下のコードを貼り付け
 右上のXボタンでシートに戻り、いろいろと値を入れてみてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    Dim c As Range
    Dim x As Variant
    Dim y As Long

    Set r = Intersect(Target, Range("B9:D" & Rows.Count))
    If r Is Nothing Then Exit Sub

    Application.EnableEvents = False

    With CreateObject("Scripting.Dictionary")
        For Each c In r
            .Item(c.Row) = True
        Next

        For Each x In .keys
            With Rows(x)
                .Range("F1").ClearContents
                If .Range("B1").Value < .Range("C1").Value Then
                    If .Range("C1").Value = .Range("D1").Value Then
                        For y = 1 To 10
                            Beep
                        Next
                        .Range("F1").Value = "OK"
                        .Range("F1").Font.Color = vbRed
                    End If
                End If
            End With
        Next
    End With

    Application.EnableEvents = True

 End Sub

(β) 2015/09/28(月) 18:50


 他サイトでマルチポストなので、一時的に私の書き込みは停止します。
(カリーニン) 2015/09/28(月) 18:54

この度は本当に親身にご対応頂きまして真にありがとう御座いました!

マルチポストの件は申し訳御座いませんでした。
ネットマナーがまだ身についていないようで、非常に恥ずかしく思っております。

今後はこのようなことが無いように致します。

本当に申し訳御座いませんでした。
(Decoy) 2015/09/28(月) 19:17


 ついでに遊びです。

 Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    Dim c As Range
    Dim x As Variant
    Dim y As Long

    Set r = Intersect(Target, Range("B9:D" & Rows.Count))
    If r Is Nothing Then Exit Sub

    Application.EnableEvents = False

    With CreateObject("Scripting.Dictionary")
        For Each c In r
            .Item(c.Row) = True
        Next

        For Each x In .keys
            With Rows(x)
                .Range("F1").ClearContents
                If .Range("B1").Value < .Range("C1").Value Then
                    If .Range("C1").Value = .Range("D1").Value Then
                        doremi "mi", 1 / 4
                        doremi "mi", 1 / 8
                        doremi "re", 1 / 8
                        doremi "do", 1 / 4
                        doremi "do", 1 / 4
                        doremi "re", 1 / 4
                        doremi "re", 1 / 4
                        doremi "mi", 1 / 8
                        doremi "re", 1 / 8
                        doremi "do", 1 / 4
                        doremi "so", 1 / 4
                        doremi "so", 1 / 8
                        doremi "fa", 1 / 8
                        doremi "mi", 1 / 4
                        doremi "mi", 1 / 4
                        doremi "re", 1 / 8
                        doremi "do", 1 / 8
                        doremi "re", 1 / 8
                        doremi "mi", 1 / 8
                        doremi "do", 1 / 1
                        .Range("F1").Value = "OK"
                        .Range("F1").Font.Color = vbRed
                    End If
                End If
            End With
        Next
    End With

    Application.EnableEvents = True

 End Sub

 Private Sub doremi(scl As String, intvl As Double)
    Dim x As Long
    Dim y As Long

    x = intvl * 16 * 100

    Select Case scl
        Case "do": y = 262
        Case "re": y = 294
        Case "mi": y = 330
        Case "fa": y = 349
        Case "so": y = 392
        Case "la": y = 440
        Case "si": y = 494
        Case "do+": y = 523
    End Select

    Beep y, x

 End Sub

(β) 2015/09/28(月) 22:20


こんにちは。

> 当方が少々難聴になってきたため、後々のことを考えると
おと(聴覚)よりも え(視覚)を使ったほうがいいと思いますが。

( 佳 ) 2015/09/29(火) 06:14


本当に何から何まで有難う御座いました!!

このHPでVBAの事、ネットマナーの事、色々勉強させて頂きました。
素晴らしいHPだと思います!
いつかアドバイスできる側に回って恩返しできればと思っております。

この度は本当に有難う御座いました!
(Decoy) 2015/09/29(火) 10:31


こんにちは。

> 当方が少々難聴になってきたため、後々のことを考えると
>おと(聴覚)よりも え(視覚)を使ったほうがいいと思いますが。

アドバイス頂き有難う御座います。
使用目的を考えると音のほうが良いかなと思い今回の製作を決めたのですが、
絵でもよいかもしれません。

自分で製作するときに検討してみます。
有難う御座いました!
(Decoy) 2015/09/29(火) 10:39


 あちらはまだ開いていて、私以外のレスも付いていますので手当しておいてください。

 と、思ったら、こちらで話が進んでいるので他の回答者はレスを削除されたようです。

 いずれにせよ、開きっぱなしはよくありません。
(カリーニン) 2015/09/29(火) 10:58

重ね重ね申し訳御座いませんでした。。。。

あちらの質問は削除の依頼をだしておきます。
(Decoy) 2015/09/29(火) 13:04


>かつC9のセルとD9のセルの値が同じ場合のときに、F10にOKの赤文字を表示し、任意のWAV音源の音が鳴る。

こちらが少々間違えておりまして、正しくは下記が正解でした。。。

エクセルのVBAで、B9の値がC9より低く、D9のセルの値がC9と同じかもしくはそれ以上の場合、F10にOKの赤文字を表示し、任意のWAV音源の音が鳴る。

せっかくお答えいただいたのに本当に申し訳御座いませんでした。
(Decoy) 2015/09/29(火) 13:08


 wavファイルの鳴らし方の一つ で API使用

 Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
 '0: 同期
 '1: 非同期
 'APIの宣言↑
 Sub test()
   '↓wavファイル フルパス
   Ifile$ = "D:\F\ミュージック\ichinose90点の歌声.wav"
   Call sndPlaySound(Ifile$, 0)
 End Sub

 後は、これをどのように使うか です

(ichinose) 2015/09/29(火) 20:30


 私のコードでいえば(どちらも)4行変更。

 .Range("F1").ClearContents
      ↓
 .Range("F2").ClearContents

 If .Range("C1").Value = .Range("D1").Value Then
            ↓
 If .Range("D1").Value >= .Range("C1").Value Then

                        .Range("F1").Value = "OK"
                        .Range("F1").Font.Color = vbRed
                   ↓
                        .Range("F2").Value = "OK"
                        .Range("F2").Font.Color = vbRed
(β) 2015/09/29(火) 21:14

 ところで。

 >>あちらの質問は削除の依頼をだしておきます。

 基本的には、こちらも、あちらも マルチ禁止ではない(あちらは、かってはNG)とはいうものの
 同時進行で進むと、両方の対応で、Decoyさん自身が、大変かな。

 あちら、削除依頼というのは、あちらの事務局あてですか?
 そうしなくても、あちらは、Decoyさんが、理由をコメントしたうえで、「解決」マークを選んで書き込めば
 トピはクローズになりますよ。

(β) 2015/10/02(金) 14:23


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.