[[20190131152947]] 『マクロを実行する前にセルが空白か確認する』(初心者ウーマン) ページの最後に飛ぶ

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

 

『マクロを実行する前にセルが空白か確認する』(初心者ウーマン)

 マクロを実行するにあたりP13セルの数字をみてマクロを選んで実行させたいのですが、
 それはCallで呼ぶことができるみたいなのですが、
 P13セルが1の時にはMacro1を実行するようにするのですが
 実行する前にD2セルとD6セルのうち一つでも空白の場合は
 空白セルがありますとメッセージを流してマクロの実行をしないようにしたいです。
 またP13セルが2の時にはMacro2を実行するようにするのですが
 実行する前にD2セルとD6セル以外にD4セル、D5セルのうち一つでも空白の場合は
 空白セルがありますとメッセージを流してマクロの実行をしないようにしたいです。
 このようにP13セルの数字によって別々の空白セルがあった場合には
 マクロを実行しないで警告メッセージを流すことはできますか?
 よろしくお願いします。

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


 できます。
 Selectで分けるとよいかと。
(稲葉) 2019/01/31(木) 15:36

できますか?、じゃありません。 質問する前に、まずは自分で考えて、調べて、コーディングして、デバッグしてください。 回答者をロボット扱いしないで!
 Sub test()
    Select Case Range("P13")
    Case 1
        If Range("D2") = "" Or Range("D6") = "" Then
            MsgBox "空白セルがあります", vbCritical, 1
            Exit Sub
        End If
        Call Macro1
    Case 2
        If Range("D2") = "" Or Range("D6") = "" Or _
           Range("D4") = "" Or Range("D5") = "" Then
            MsgBox "空白セルがあります", vbCritical, 2
            Exit Sub
        End If
        Call Macro2
    End Select
 End Sub

P13が1でも2でもない場合はどうするのかなぁ?、とか思いますが、ご自分で考えてください。

(???) 2019/01/31(木) 15:53


 最近の???さん優しいですよね・・・。
(稲葉) 2019/01/31(木) 16:00

 お二人ともありがとうございました。
 マクロを知って日が浅く、普段はマクロの記録から記録してるのが主で
 わからない事は調べてるつもりなのですが
 どうしても組み方等がわからずついつい質問をしてしまいました。
 マクロについてわかりやすいサイト等おすすめがあれば教えていただければ
 そちらを参考に自分で考えたいと思います。
 回答者様をロボット扱いしてるつもりはないので
 もしそのように感じたのであればすいませんでした。
(初心者ウーマン) 2019/01/31(木) 16:13

VBAといえど、立派なコンピュータ言語のプログラミングです。 学校の授業とは全く逆で、どこかで学んで覚える事なんてどうでも良くて、必要なときに調べて、書いて、動かして、デバッグ、という事を繰り返すものです。 自分で考えていれば、「できますか?」なんて質問にならず、「こうしたいけどこうなってしまう」という質問になるはず。

適切なキーワードを指定して素早く調べられるようになれば作るのが早くなっていくし、不具合を見つけて修正する事を繰り返すうちに、同じ不具合を出さないようになっていくものなので、お薦めサイトなんて探さずに、ひたすらググってみてください。 何をキーワードにすれば良いか、それを試し続けてみてください。(やりたい事を簡潔に書いて、スペースで区切って、excel とか vba とか 数式 とかを一緒に指定するのが基本)
(???) 2019/01/31(木) 16:31


 同意見ですが、ちょっとずつ参考サイト載せたので、動かしながらやってみてください。
    Option Explicit
    Sub test()
        Stop
        'F8を押して、ステップ実行しながら挙動を確かめてください。
        'https://www.239-programing.com/excel-vba/basic/basic023.html

        '変数宣言
        'http://officetanaka.net/excel/vba/variable/
        Dim msg As String

        'Selectステートメント
        'http://officetanaka.net/excel/vba/statement/SelectCase.htm
        'Rangeオブジェクト Valueプロパティ
        'http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_10.html
        Select Case Range("P13").Value
            Case 1
                msg = chkBLANK(Range("D2,D6"))
                'Ifステートメント
                'https://vba-code.net/basic/if/
                If msg <> "" Then
                    MsgBox msg & "が空白です"
                    'MsgBox関数
                    'https://www.moug.net/tech/exvba/0100051.html
                Else
                    Call macro1
                End If
            Case 2
                msg = chkBLANK(Range("D2,D6,D4,D5"))
                If msg <> "" Then
                    MsgBox msg & "が空白です"
                Else
                    Call macro2
                End If
        End Select
    End Sub
    'Functionプロシージャ
    'http://www.excel-wing.com/study/macro/588
    Private Function chkBLANK(rng As Range) As String
        Dim r As Range
        Dim Result As String
        'For Eachステートメント
        'http://officetanaka.net/excel/vba/speed/s5.htm
        For Each r In rng
            If r.Value = "" Then Result = Result & "," & r.Address(0, 0)
        Next r
        chkBLANK = Mid$(Result, 2)
    End Function

(稲葉) 2019/01/31(木) 16:47


 お二人ともありがとうございました。
 少しづつ勉強していきたいと思います。
(初心者ウーマン) 2019/01/31(木) 17:01

コメント返信:

[ 一覧(最新更新順) ]


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