View Full Version : سوال: صدور پیغام خطا در فراخوانی تابعی که دارای آرگومان میباشد
atf1379
پنج شنبه 04 مرداد 1403, 10:43 صبح
سلام
در نمونه ضمیمه برای صاف کردن یا فلت کردن دو کنترل فرم وقتی تابع عمومی را بصورت Call fReset(Me) در رویداد کلیک کمد باتن 2 فراخوانی میشود نتیجه بدون خطا بدست می آید ولی اگر تابع رو بصورت fReset(Me)= در رویداد MouseMove درج شود خطای آرگومان Me صادر میشود
دوستان با تجربه لطفاً راهنمائی بفرمایند علت این خطا چه میتواند باشد
ممنون
mazoolagh
پنج شنبه 04 مرداد 1403, 18:28 عصر
سلام و روز خوش
اول کدها رو در تگ مناسب بذارین،
اگر نیاز به برنامه باشه پاسخ دهنده خودش درخواست میکنه.
در مورد این پرسش:
1- sub رو میشه با call یا مستقیم سدا زد:
sub print_now()
debug.print (now)
end sub
' method 1 : using call
call print_now
' method 2 : without call
print_now
2- اگر sub آرگومان داشته باشه و با call سدا زده بشه در اینصورت باید آرگومانها درون پرانتز باشه:
sub print_add(a as integer , b as integer)
debug.print a + b
end sub
' method 1 : using call
call print_add(5 , 7)
' method 2 : without call
print_add 5 , 7
3- در مورد function هم همین ها برقراره:
dim v
v = msgbox("message" , , "title")
msgbox "message" , , "title"
atf1379
جمعه 05 مرداد 1403, 11:01 صبح
سلام و روز خوش
اول کدها رو در تگ مناسب بذارین،
اگر نیاز به برنامه باشه پاسخ دهنده خودش درخواست میکنه.
سلام
وقت بخیر
بر روی فرم نمونه پست 1 دو کنترل از نوع لیبل وجود دارد که در حالت برجسته (Raised) می باشند با استفاده از تابع عمومی زیر و فراخوانی آن در رویداد کلیک کمند باتن دوم بصورت Call fReset(Me)
در حالت صاف(flat) قرار می گیرند . در این حالت هیچ مشکلی وجود ندارد و در نتیجه فراخوانی تابع دو تا کنترل به حالت flat تغییر می کنند.
مشکل مربوط به حالتیست که وقتی کد فراخوانی تابع را بصورت fReset(Me)= در رویداد On MouseMove کمند باتن اول قرار داده میشود خطا صادر میشود . و ظاهراً این خطا بعلت درج کلمه کلیدی Meبعنوان آرگومان تابع میباشد.
Public Function fReset(frm As Form)
On Error Resume Next
Dim ctl As control
Set ctl = frm.Controls
For Each ctl In frm.Controls
If ctl.SpecialEffect = 1 Then
ctl.SpecialEffect = 0
End If
Next ctl
End Function
mazoolagh
جمعه 05 مرداد 1403, 21:46 عصر
1- این Set ctl = frm.Controls کلا اضافه است!
در کپی کردن کدها دقت کنین!
2- روشی که برای آدرس دادن به فرم انتخاب کردین (On MouseMove =fReset(Me)) اشتباه هست،
اینجوری بنویسین:
On MouseMove =fReset([Form])
atf1379
جمعه 05 مرداد 1403, 22:04 عصر
1- این Set ctl = frm.Controls کلا اضافه است!
در کپی کردن کدها دقت کنین!
2- روشی که برای آدرس دادن به فرم انتخاب کردین (On MouseMove =fReset(Me)) اشتباه هست،
اینجوری بنویسین:
On MouseMove =fReset([Form])
احسنت !:تشویق::تشویق::تشویق:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.