[[20150324211930]] 『Worksheet_Changeに追加して記述したい』(もんぺ) ページの最後に飛ぶ

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

 

『Worksheet_Changeに追加して記述したい』(もんぺ)

VBA初心者です。先人たちがつかっていたマクロのセルの部分を変更して使っている程度です。

3つの質問があります
質問1
下記のマクロ(その1)にさらにWorksheet_Change(その2)のマクロを追加したいのですが、ただ貼り付けただけでは実行できませんでした。
その1のマクロにその2のマクロを追加し実行するにはどのようにすればよいのでしょうか?
質問2
その1のマクロので

 If Application.CountBlank(Range("F11:F12")) = 0 Thenの部分について
("F11:F12"))の部分をセルを一つ一つ指定できるようにするにはどうすればよいのでしょうか?
※"F11"と"D12"と"G12"を指定したい
質問3
その1のマクロで
If MsgBox("空欄があります。印刷を実行しますか?", vbYesNo) = vbYes Then ActiveSheet.PrintOutの部分について
空欄があった場合は印刷できないようにするにはどのようにすればよいのでしょうか?
※"空欄があります。入力してください。"

その1
Private Sub Worksheet_Change(ByVal Target As Range)

    Const データ範囲 = "K17:K200"
    If Intersect(Target, Range(データ範囲)) Is Nothing Then Exit Sub
    Dim 対象セル As Range
    For Each 対象セル In Intersect(Target, Range(データ範囲))
        If 対象セル.Value <> "" Then  '// データがない時は(削除したときも)印刷しない
            Application.EnableEvents = False
            Range("F11").Value = Cells(対象セル.Row, "E").Value
            Range("D12").Value = Cells(対象セル.Row, "G").Value
            Range("G12").Value = Cells(対象セル.Row, "E").Value

            Application.EnableEvents = True
            If Application.CountBlank(Range("F11:F12")) = 0 Then

                If MsgBox("印刷を実行しますか?", vbYesNo) = vbYes Then ActiveSheet.PrintOut
            Else
                If MsgBox("空欄があります。印刷を実行しますか?", vbYesNo) = vbYes Then ActiveSheet.PrintOut
            End If
        End If
    Next

 End Sub

その2
Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count <> 1 Then Exit Sub
  If Target.Column = 10 Then
     If Target.Value <> "" Then
        Target.Offset(0, -4) = Now

     End If
     End If

  If Target.Count <> 1 Then Exit Sub
  If Target.Column = 24 Then
     If Target.Value <> "" Then
        Target.Offset(0, -5) = Now

     End If
  End If
 End Sub

どなたかお教え願います。

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


 質問1

 If Intersect(Target, Range(データ範囲)) Is Nothing Then Exit Sub

 これを

 If Not Intersect(Target, Range(データ範囲)) Is Nothing Then

    For

    '
    '
    '
    Next

 End If

 このあとに その2 を

 質問2

 COUNTBLANK はとびとびの領域を指定できないので

 If WorksheetFunction.CountBlank(Range("F11")) + WorksheetFunction.CountBlank(Range("D12")) + WorksheetFunction.CountBlank(Range("G12")) = 0

 質問3

 If MsgBox("空欄があります。印刷を実行しますか?", vbYesNo) = vbYes Then ActiveSheet.PrintOut

 これを、単純に

 MsgBox "空欄があります。印刷をスキップします"

(β) 2015/03/24(火) 22:13


ありがとうございました。
3つともできました。
自分にはまったくわかっていないので魔法です。
がんばります。

(もんぺ) 2015/03/24(火) 23:02


コメント返信:

[ 一覧(最新更新順) ]


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