[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『MsgBoxが出た時、別シートに履歴を残したい。』(haru)
マクロで、入力規則的なことをしているのですが、
Sheets("Sheet2").Range("A1:A10").Validation.Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="100", Formula2:="200"
Sheets("Sheet2").Range("A1:A10").Validation.ErrorTitle = "数値エラー"
Sheets("Sheet2").Range("A1:A10").Validation.ErrorMessage = "数値を確認。"
メッセージMOXが出た時に、別シートに履歴を残したいです。
日・時間・シート名を残すように。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
マクロで入力規則のポップアップイベントを取得出来るのかどうかは 調べていませんが、マクロを使うなら単純にMsgboxと条件文の併用で 行った方が履歴は取りやすいのでは無いでしょうか。外してましたら お許しを、お詳しい方の回答もお待ちくださいね。(^^;。。でわ (隠居じーさん) 2019/06/17(月) 18:34
> マクロで入力規則のポップアップイベントを取得出来るのかどうかは >調べていませんが
ポップアップイベントって・・・?だらだらリストが表示された状態? 単純にチェンジイベントでは。 (BJ) 2019/06/17(月) 20:33
こんばんは ^^ すみません。 ポップアップイベントなんて言葉は無いのかもしれません^^; 警告のアラート(Msgbox?)が出ますので。それを取得することは 可能なのかなぁと思っただけでして。 m(_ _)m (隠居じーさん) 2019/06/17(月) 21:08
これで、数字以外を入れた時と同じで取れないと思います。 a = Application.InputBox("数字のみ", Type:=1) (BJ) 2019/06/17(月) 21:50
はい。ありがとうございました。m(_ _)m >>単純にチェンジイベントでは。 の通りかと思います。 (隠居じーさん) 2019/06/17(月) 22:15
なので、入力規則は全部解除し、Worksheet_Changeイベント時とかで、セル毎にマクロで上下判定するように変えないと駄目でしょうね。 自分でエラー判定するなら、ログ出力は簡単でしょう。
(???) 2019/06/18(火) 09:57
Sheet1 ← ログ出力(初期化される、こともある ←多分、テストしてません。 ^^; Sheet2 ← 入力シート(A1〜A10、対象) もっとスマートな方法がきっとあるとは思いますが。。。一案です。。。でわ m(_ _)m
Sheet2モジュールへコピペ
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub If Intersect(Target, Me.Range("A1:A10")) Is Nothing Then Exit Sub If IsEmpty(Target) Then Exit Sub Application.EnableEvents = False If Target.Value > 200 Or Target.Value < 100 Or Not IsNumeric(Target.Value) Then MsgBox "数値が違います", vbCritical + vbDefaultButton1, "数値エラー" With Worksheets("Sheet1") If WorksheetFunction.CountA(.Rows(1)) = 0 Then .Cells(1).Resize(, 4) = Array("入力日時", "シート名", "入力値", "入力値先頭ユニコード") End If .Range("A2:D2").Insert xlDown .Cells(2, 1) = Format(Now(), "yyyy/mm/dd - hh:mm:ss") .Cells(2, 2) = Me.Name .Cells(2, 3) = Target.Value .Cells(2, 4) = WorksheetFunction.Unicode(Target.Value) If .Cells(.Rows.Count, 1).End(xlUp).Row > 100000 Then MsgBox "ログの書込みスペースが不足しています初期化します" .Range(.Rows(3), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row)).Delete End If Target = Empty Target.Activate End With End If Application.EnableEvents = True End Sub (隠居じーさん) 2019/06/18(火) 12:37
(haru) 2019/06/20(木) 09:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.