[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『列の日付がことなるデータをメッセージボックスで表示したい。』(テンドー)
初めまして。
A列に日付、B列に指名が掛かれているリストがあります。(1行目はタイトル)
このリストでA2の日付と異なるものがある場合、メッセージボックスで
「〇〇さん(B列の指名)日付が異なります。」と表示するVBAを作りたいのですが、ご教授いただけませんでしょうか。
よろしくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>指名が掛かれている
「氏名が書かれている」ですね。
(通りすがり) 2021/09/07(火) 10:57
どういうタイミングでMsgBoxを出したいのでしょう?
条件付き書式ではだめですか? (通りすがり) 2021/09/07(火) 11:03
条件付き書式で異なれば色付けなども行っていたのですが、
出来れば改良したい(データ行が多いのでピックアップしたい、自分以外の人も使うシートなので別シートに抽出ではなくメッセージボックスで表示したい)のでご相談させていただきました。
(テンドー) 2021/09/07(火) 11:13
VBAを覚えるつもりが無い作成依頼なのであれば、
ハッキリそう言ってください。
(tkit) 2021/09/07(火) 11:45
Public Sub test()
Dim i As Long Dim s As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(1, i) <> Range("A2").Value Then
juhuku = s + 1
End If
Next
If juhuku > 1 Then
MsgBox "重複データが有ります。"
End If
MsgBox "完了しました。"
End Sub
ここまでVBAは完成しているのですが、
MsgBox "重複データが有ります。"
の部分に日付が異なっている氏名を表示させたいのです。
自分でも調べてみたのですが、今の状態だと単純に数えているだけなので
上手く行きません。
どこをどのように変更すればよいかご教授お願いします。
改良版の作成依頼と言ってしまえばそうかもしれません。言葉足らずで申し訳ありませんでした。
(テンドー) 2021/09/07(火) 13:09
Sub test改()
Dim i As Long
Dim MyMSG As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, "A").Value <> Range("A2").Value Then 'Cellsプロパティは【行,列】の順番です
MyMSG = MyMSG & vbLf & i & "行目 " & Cells(i, "B").Value
End If
Next
If MyMSG <> "" Then
MsgBox "以下のデータを確認してください" & MyMSG
Else
MsgBox "問題ありません"
End If
End Sub
(もこな2 ) 2021/09/07(火) 13:31
Sub sample()
'メッセージを変数に入れる
Dim notDateMessage As String
Dim unmatchDateMessage As String
notDateMessage = "日付ではありません"
unmatchDateMessage = "日付が異なります"
'比較元の日付を変数に入れる
Dim sourceDate As Date
With Range("A2")
If Not IsDate(.Value) Then
'日付ではなかったら、エラーメッセージを出して終了
MsgBox notDateMessage, vbExclamation
Exit Sub
End If
sourceDate = .Value
End With
'リストを変数に配列で入れる
Dim sourceList As Variant
sourceList = Range("A2", Cells(Rows.Count, "B").End(xlUp)).Value
Dim i As Long
Dim errMessage As String
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
'配列の1次元の要素分ループする
For i = LBound(sourceList, 1) To UBound(sourceList, 1)
'エラーメッセージのクリア
errMessage = ""
If Not IsDate(sourceList(i, 1)) Then
'日付ではなかったら
errMessage = sourceList(i, 2) & "さん" & Chr(32) & notDateMessage
ElseIf DateDiff("d", sourceDate, sourceList(i, 1)) <> 0 Then
'日付が不一致だったら
errMessage = sourceList(i, 2) & "さん" & Chr(32) & unmatchDateMessage
End If
If Len(errMessage) > 0 Then
'エラーメッセージ変数に文字が入っていたら
If Not dic.Exists(errMessage) Then
'連想配列にエラーメッセージが無かったら
dic.Add errMessage, errMessage
'連想配列にエラーメッセージを入れる
End If
End If
Next i
If dic.Count > 0 Then
'連想配列の要素があったら
MsgBox Join(dic.keys, vbCrLf), vbExclamation
Else
MsgBox "終了"
End If
End Sub
(tkit) 2021/09/07(火) 13:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.