Chỉ hiện MSG BOX một lần (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thnghiachau

Chỉ biết ngồi BÈ và PHÁN chuyện!!!
Tham gia
14/9/09
Bài viết
844
Được thích
710
Giới tính
Nam
Nghề nghiệp
Search
Chào các Thầy trên GPE,

Em có một vấn đề như sau:
em tao 1 form, rùi gọi một msg box, nhưng cứ nhấn gọi là ra một msg box, nhấn bao nhiêu thì lại hiện bấy nhiêu!!!
Vậy có thầy có thể chỉnh lại code em như thế nào để CHỈ CÓ THỂ NHẤN HIỆN RA 1 LẦN, VÀ NẾU THOÁT MSG BOX NÀY THÌ MỚI NHẤN HIỆN RA LẠI MSG BOX ĐƯỢC.
Vui lòng xem file đính kèm.

Cám ơn sự giúp đỡ nhiều.
 

File đính kèm

Chào các Thầy trên GPE,

Em có một vấn đề như sau:
em tao 1 form, rùi gọi một msg box, nhưng cứ nhấn gọi là ra một msg box, nhấn bao nhiêu thì lại hiện bấy nhiêu!!!
Vậy có thầy có thể chỉnh lại code em như thế nào để CHỈ CÓ THỂ NHẤN HIỆN RA 1 LẦN, VÀ NẾU THOÁT MSG BOX NÀY THÌ MỚI NHẤN HIỆN RA LẠI MSG BOX ĐƯỢC.
Vui lòng xem file đính kèm.

Cám ơn sự giúp đỡ nhiều.

thử sử dụng mẹo nhỏ này xem sao :
Mã:
Private Sub CommandButton1_Click()
Dim Msg As Variant
Static chk As Boolean
If Not chk Then
    chk = True
    Msg = MessageBoxW("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
    If Msg = vbYes Then
        MsgBox "ban thay gi?"
        chk = False
    Else
        chk = False
    End If
End If
End Sub

nếu muốn của sổ msgbox luôn ở trạng thái active có khi phải sử dụng thêm vài hàm API mới ok
 
Upvote 0
thử sử dụng mẹo nhỏ này xem sao :
Mã:
Private Sub CommandButton1_Click()
Dim Msg As Variant
Static chk As Boolean
If Not chk Then
    chk = True
    Msg = MessageBoxW("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
    If Msg = vbYes Then
        MsgBox "ban thay gi?"
        chk = False
    Else
        chk = False
    End If
End If
End Sub

nếu muốn của sổ msgbox luôn ở trạng thái active có khi phải sử dụng thêm vài hàm API mới ok

Cám ơn hungpecc1 nhiều lắm,
Nhưng mình muốn như file đính kèm ah...
nếu được giúp mình nữa nha.

Cám ơn nhiều.
 

File đính kèm

Upvote 0
thử sử dụng mẹo nhỏ này xem sao :
Mã:
Private Sub CommandButton1_Click()
Dim Msg As Variant
Static chk As Boolean
If Not chk Then
    chk = True
    Msg = [COLOR=#ff0000][B]MessageBoxW[/B][/COLOR]("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
    If Msg = vbYes Then
        MsgBox "ban thay gi?"
        chk = False
    Else
        chk = False
    End If
End If
End Sub

nếu muốn của sổ msgbox luôn ở trạng thái active có khi phải sử dụng thêm vài hàm API mới ok

Mình không biết cái MessageBoxW là cái gì nữa! Đã làm thì làm cho trót chứ bạn hiền?

sửa lại tí nhé:

Mã:
Private Sub CommandButton1_Click()
    Dim Msg As Variant
    Static chk As Boolean
    If Not chk Then
        chk = True
        Msg = [B][COLOR=#0000cd]MsgBox[/COLOR][/B]("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
        If Msg = vbYes Then
            MsgBox "ban thay gi?"
            chk = False
        Else
            chk = False
        End If
    End If
End Sub


Cám ơn hungpecc1 nhiều lắm,
Nhưng mình muốn như file đính kèm ah...
nếu được giúp mình nữa nha.

Cám ơn nhiều.

Thật tình tôi đọc tới đọc lui vẫn không hiểu bạn muốn nói cái gì nữa! Đằng nào cũng thoát MsgBox thì mới hiện lên cái khác mà?

Còn nếu làm theo cách của bạn hungpecc1 thì tôi sẽ làm ngắn gọn như sau:

Mã:
Private Sub CommandButton1_Click()
    If MsgBox("Neu chon Yes se hien MsgBox thu 2", vbYesNo + vbQuestion, "THÔNG BÁO") = vbYes Then
        MsgBox "Khong the nhan tiep"
    End If
End Sub

Hay bạn muốn nó như thế này:

Mã:
Private Sub CommandButton1_Click()
    MsgBox "[COLOR=#0000ff]Vi ban chon khong dung dieu kien, nen khong the nhan tiep duoc nua![/COLOR]"
    CommandButton1.Enabled = False
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bản chất của MsgBox kèm VbYesNO thì nếu không chọn 1 trong 2 cái nút đó thì có làm gì khác đâu mà phải dk tá lả vậy trời
 
Upvote 0
Chỉ cần xài Msgbox thông thường sẽ không bị gì hết:

PHP:
Private Sub CommandButton1_Click()
Dim Msg As Variant
    Msg = MsgBox("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
    If Msg = vbYes Then MsgBox "ban thay gi?"
End Sub
 
Upvote 0
Chào các Thầy trên GPE,

Em có một vấn đề như sau:
em tao 1 form, rùi gọi một msg box, nhưng cứ nhấn gọi là ra một msg box, nhấn bao nhiêu thì lại hiện bấy nhiêu!!!
Vậy có thầy có thể chỉnh lại code em như thế nào để CHỈ CÓ THỂ NHẤN HIỆN RA 1 LẦN, VÀ NẾU THOÁT MSG BOX NÀY THÌ MỚI NHẤN HIỆN RA LẠI MSG BOX ĐƯỢC.
Vui lòng xem file đính kèm.

Cám ơn sự giúp đỡ nhiều.

Trong Module1 của bạn, code cũ là:
[GPECODE=vb]
Option Explicit

Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long

Function MessageBoxW(cPrompt As String, _
Optional cButtons As VbMsgBoxStyle = vbOKOnly, _
Optional cTitle As String) As Long

MessageBoxW = User32MsgBox(0, StrPtr(cPrompt), StrPtr(cTitle), cButtons)

End Function
[/GPECODE]

Cần thêm như sau sẽ ok
[GPECODE=vb]
Option Explicit

Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long

Function MessageBoxW(cPrompt As String, _
Optional cButtons As VbMsgBoxStyle = vbOKOnly, _
Optional cTitle As String) As Long

MessageBoxW = User32MsgBox(GetActiveWindow, StrPtr(cPrompt), StrPtr(cTitle), cButtons)

End Function
[/GPECODE]
 
Upvote 0
Trong Module1 của bạn, code cũ là:
[GPECODE=vb]
Option Explicit

Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long

Function MessageBoxW(cPrompt As String, _
Optional cButtons As VbMsgBoxStyle = vbOKOnly, _
Optional cTitle As String) As Long

MessageBoxW = User32MsgBox(0, StrPtr(cPrompt), StrPtr(cTitle), cButtons)

End Function
[/GPECODE]

Cần thêm như sau sẽ ok
[GPECODE=vb]
Option Explicit

Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long

Function MessageBoxW(cPrompt As String, _
Optional cButtons As VbMsgBoxStyle = vbOKOnly, _
Optional cTitle As String) As Long

MessageBoxW = User32MsgBox(GetActiveWindow, StrPtr(cPrompt), StrPtr(cTitle), cButtons)

End Function
[/GPECODE]

Cám ơn bạn nhiều lắm!!...
Đúng ý mình rùi...
 
Upvote 0
Chỉ cần xài Msgbox thông thường sẽ không bị gì hết:

PHP:
Private Sub CommandButton1_Click()
Dim Msg As Variant
    Msg = MsgBox("Hay nhan tiep nut HIEN MSG BOX", vbYesNo + vbQuestion, "---!!!NOTICE!!!---")
    If Msg = vbYes Then MsgBox "ban thay gi?"
End Sub
Em nghĩ tác giả muốn sử dụng msgbox bằng tiếng việt --> nên mới sử dụng các hàm API --> sửa như a Tuân là ok ( thêm hàm getacitvewindow())
 
Upvote 0
Mình không biết cái MessageBoxW là cái gì nữa! Đã làm thì làm cho trót chứ bạn hiền?


Thật tình tôi đọc tới đọc lui vẫn không hiểu bạn muốn nói cái gì nữa! Đằng nào cũng thoát MsgBox thì mới hiện lên cái khác mà?

Cám ơn bạn đã giúp mình.
Cái MessageBoxW dùng để hiển thị được tiếng Việt có dấu đó bạn.
Còn ý nghĩa như thế nào mình hỏi thì bạn coi file gốc của mình với sự điều chỉnh của bạn Nguyễn Duy Tuân thì bạn sẽ thấy được sự khác biệt.
Khác biệt chính là sự dòng này

Private Declare Function GetActiveWindow Lib "user32" () As Long



MessageBoxW = User32MsgBox(GetActiveWindow, StrPtr(cPrompt), StrPtr(cTitle), cButtons)


làm cho msgbox cua minh ở trang thai active chính!!!

Cám ơn vì tất cả.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom