[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『列の日付がことなるデータをメッセージボックスで表示したい。』(テンドー)
初めまして。
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.