Board logo

標題: [發問] 如何把多个MsgBox的讯息放在一个对话框? [打印本頁]

作者: jeffrylky    時間: 2016-3-17 11:17     標題: 如何把多个MsgBox的讯息放在一个对话框?

[attach]23468[/attach]
  1. Private Sub Workbook_Open()

  2. For i = 2 To Sheet1.UsedRange.Rows.Count

  3.    If ("0" < Sheet1.Cells(i, 7).Value) And (Sheet1.Cells(i, 7).Value < "4") And Cells(i, 8).Value = "PENDING" Then
  4.         MsgBox (Sheet1.Cells(i, 3).Value & "Still have" & Sheet1.Cells(i, 7).Value & "days!!! PLEASE UPDATE. ")
  5.     ElseIf ((Sheet1.Cells(i, 7).Value) < "1") And Cells(i, 8).Value = "PENDING" Then
  6.         MsgBox (Sheet1.Cells(i, 3).Value & "Still not arrive!!!!! PLEASE FOLLOW UP. ")
  7.    
  8.    End If
  9.   

  10. Next i

  11. End Sub
複製代碼
这个vba可以在打开excel时通知我收单日期到期,可是每次一打开excel就有很多对话框,请问有什么方法能让所有对话框的信息都放在一个对话框吗?
作者: yen956    時間: 2016-3-17 12:28

'試試看:
'但 MsgBox 字數有限制, 一次不能裝太多!!
'能裝多少我不清楚!!
'如果裝不下, 就要分段顯示.
Private Sub Workbook_Open()
Dim xT As String
With Sheet1
    For i = 2 To .UsedRange.Rows.Count + 1
        If .Cells(i, 8) = "PENDING" Then
            If ("0" < .Cells(i, 7)) And (.Cells(i, 7) < "4") Then
                xT = xT & (.Cells(i, 3) & " Still have" & .Cells(i, 7) & "days!!! PLEASE UPDATE. ") & Chr(10)
            ElseIf ((.Cells(i, 7)) < "1") Then
                xT = xT & (.Cells(i, 3) & " Still not arrive!!!!! PLEASE FOLLOW UP. ") & Chr(10)
            End If
        End If
    Next i
    MsgBox xT
End With
End Sub
作者: 准提部林    時間: 2016-3-17 14:11

如果提示項目太多, 根本記不住, 用MSGBOX顯示的內容不具實用,
不如檢查出有須提示後即顯示訊息(不須全部檢查完成才提示),
只要知道必須人工檢查有資料須處理即可,
搭配條件格式亮出符合條件者, 就一目瞭然!!!
作者: jeffrylky    時間: 2016-3-17 14:28

回復 2# yen956


    成功了!非常感谢~虽然讯息太多显示不完~ :)
作者: jeffrylky    時間: 2016-3-17 14:35

回復 3# 准提部林


    的确装不完~
谢谢你的提议~
作者: jackyq    時間: 2016-3-17 14:46

大大可以用 UserForm  上面看要用 ListBox 還是 TextBox
這樣就裝的下了
作者: yen956    時間: 2016-3-17 15:12

這是根據准大的建議所做的修正:
試試看:
Private Sub Workbook_Open()
Dim I As Integer
With Sheet1
    For I = 2 To .UsedRange.Rows.Count + 1
        If .Cells(I, 8) = "PENDING" Then
            If ("0" < .Cells(I, 7)) And (.Cells(I, 7) < "4") Then
                 .Cells(I, 3).Interior.ColorIndex = 36
            ElseIf ((.Cells(I, 7)) < "1") Then
                 .Cells(I, 3).Interior.ColorIndex = 38
            End If
        End If
    Next I
End With
End Sub
作者: jeffrylky    時間: 2016-3-17 15:30

回復 6# jackyq


    谢谢这位大大的提议~在下菜鸟一只~目前还不会Userform~不过在下会尝试的~感谢~XD
作者: jeffrylky    時間: 2016-3-17 15:40

本帖最後由 jeffrylky 於 2016-3-17 15:43 編輯

回復 7# yen956


    非常感谢这位大大
作者: jeffrylky    時間: 2016-3-17 15:45

回復 7# yen956


    非常感谢这位大大提供的vba~不然在下不知道需要研究多久了~有了大大的vba倒是不用到处找了~直接从大大的vba中学习~




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)