PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نمایش یه پیام بدون هیچ کلیدی



afshar_yan
2014/11/28, 23:19
سلام
چطوری میشه یه مسیج باکس نمایش داد که هیچ دکمه ای مثل اوکی و کنسل و ... نداشته باشه?

Amir Ghasemiyan
2014/11/28, 23:24
سلام
چطوری میشه یه مسیج باکس نمایش داد که هیچ دکمه ای مثل اوکی و کنسل و ... نداشته باشه?

سلام دوست عزيز
خب اگه هيچ دكمه اي نداشته باشه چطور ميخواين از صفحه حذفش كنين؟ ;)

afshar_yan
2014/11/29, 13:18
سلام
میخوام با کنترل یه شرط از رو صفحه پاک بشه
مثلا وقتی اکسل مشغول محاسبهات هست یه فرم یا مسیج رو صفحه بیاد که " منتظر باشید " بعداز تمام شدن کار اکسل اون صفحه هم پاک بشه
ممنون

khakzad
2014/11/29, 15:01
دوست عزیز نمایش مسیج باکس رو می تونید منوط کنید به کدهای زمانومثلا بعد از 5 دقیقه خودش فرم رو ببره.
در کل حداقل یک دکمه ok وجود داره.فک نکنم بتونید برش دارید

Amir Ghasemiyan
2014/11/30, 02:28
اينكه يه فرم داشته باشيم بدون هيچ دكمه اي رو پيدا كردم ولي مشكلي كه هست اينه كه وقتي فرم رو لود ميكني تا نبنديش هيچ كد ديگه اي اجرا نميشه
حالا من اين كد رو ميذارم براتون. شايد اون مشكل هم حل شد.
يك فرم بسازيد. روش كليك كنيد و F7 رو بزنين. كدهايي كه تو صفحه هست رو پاك كنيد و اينا رو جايگزينش كنيد

Option Explicit
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim lngWindow As Long, lFrmHdl As Long
lFrmHdl = FindWindowA(vbNullString, Me.Caption) ' The UserForm must have a caption
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
End Sub

khakzad
2014/11/30, 11:08
خب اگر باید بسته بشه. چه با دکمه close چه با ضربدر قرمز، فرقی نم یکنه که :)
فکر کنم مشکل چیز دیگه ای باشه و تو یاججرا شدن کدها باید تغییر اعمال بشه.

Amir Ghasemiyan
2014/11/30, 15:05
خب دوست عزيز
من با كمك يكي دوستانم تو امريكا تونستم براتون اين مشكل رو حل كنم.
يك فرم ايجاد كنيد و روي آن كليك كنيد و F7 رو بزنيد. تمام كدها رو پاك كنيد و اين كدها رو جايگزينش كنيد:




Option Explicit
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim lngWindow As Long, lFrmHdl As Long
Label1.Caption = "Please Wait"
lFrmHdl = FindWindowA(vbNullString, Me.Caption) ' The UserForm must have a caption
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
End Sub
Private Sub UserForm_Activate()
Call LongRoutine
Unload Me
End Sub


حالا يك ماژول بسازيد و اين كدها رو توش قرار بدين:


Sub RunWithWaitMessage()
UserForm1.Show
End Sub
Sub CallFrom()
With UserForm1
.Tag = "LongRoutine"
.Show
End With
End Sub
Sub LongRoutine()
Application.Wait Now() + TimeSerial(0, 0, 5)
End Sub



قسمتي كه قرمز كردم جايي هست كه شما بايد كدهاتون و محاسباتتون رو اونجا قرار بدين. براي اجراي اين فرايند كافيه CallForm رو فراخواني كنيد.

من براي راحتي شما يك نمونه هم درست كردم كه پيوست ميكنم.

درضمن يكي ديگه از دوستان امريكاييمون بهم يه پيشنهاد داد كه خيلي جذاب تر از اين روش هست. ان شالله اگه درست شد براتون ميذارم آموزششو

khakzad
2014/11/30, 15:59
ی دوست امریکایی دیگه، (دوست من نه :) . اقای والکنباخ رو میگم)
ی کد داره
به اینصورت که در زمان اجرای یک کد ، میاد یک bar رو به شکل loading در میاره. یعنی تا زمانی که کد اجاره میشه، علامت loading و میزان پیشرفت رو نشون میده :)

Amir Ghasemiyan
2014/11/30, 16:01
ی دوست امریکایی دیگه، (دوست من نه :) . اقای والکنباخ رو میگم)
ی کد داره
به اینصورت که در زمان اجرای یک کد ، میاد یک bar رو به شکل loading در میاره. یعنی تا زمانی که کد اجاره میشه، علامت loading و میزان پیشرفت رو نشون میده :)

منم دنبال درست كردن همچين چيزي هستم. اگه كدشو دارين بي زحمت يه تاپيك بزنين براش

Amir Ghasemiyan
2014/12/01, 01:24
خب خودم آموزششو گذاشتم شما زحمت نكشين :دي

آموزشي: نمايش درصد پيشرفت در vba (http://forum.exceliran.com/showthread.php/6076-%D9%86%D9%85%D8%A7%D9%8A%D8%B4-%D8%AF%D8%B1%D8%B5%D8%AF-%D9%BE%D9%8A%D8%B4%D8%B1%D9%81%D8%AA-%D8%AF%D8%B1-vba)

khakzad
2014/12/01, 08:50
احسنت :)
من دیگه 5 به بعد انجمن نیستم (کاری نمی تونم کنم)
مرسی