PDA

View Full Version : سوال: مشکل با VBA-Excel



meys34
پنج شنبه 12 آبان 1390, 13:00 عصر
با تشکر از Vbhamed :قلب:این مشکل رفع شد (پست 3)

مشکلی که در برنامه اصلی که داشتم مینوشتم خیلی پیچیده است :شیطان: ولی بعدا فهمیدم مشکل از یه جای ساده آب میخوره :گریه:
تلاش های فراوان من بی نتیجه موند و همه اش هم به دلیل عدم هماهنگی بین VBA و EXCEL هستش (البته در برخی موارد خاص)

یکی از این موارد این زیره:افسرده: اگر کسی با VBA کار کرده کمکم کنه لطفا:قلب:

یک فرم داریم به اسم userForm1
داخلش یه متغیر public می سازیم به اسم M
از داخل Sheet1 مقدار M رو تغییر میدیم و فرم رو show میکنیم
مقدار M خوانده شده در فرم Null است:متفکر:

'********USERFORM1***USERFORM1************
Public M As String

Private Sub UserForm_Initialize()
TextBox1.Text = M
End Sub

'********Sheet1***Sheet1***************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
M = "Catch Me If You Can !!!!!"
UserForm1.Show
End Sub

ولی یه(2 تا:ناراحت:) مشکل دیگه دارم (دیگه تاپیک جدید براش باز نکردم)
میدونم یکم پیچیده به نظر میرسه ولی ...

1-
یک صفحه excel باز کنید
از منوی insert>activex>commandbar قرار دهید
کد زیر را وارد کنید

Private Sub CommandButton1_Click()
ThisWorkbook.Saved = True
End Sub

با اجرا کردن این دستور هنگام خروج منوی save نمایان می شود (bug)

برای رفع این پیغام باید به اندازه زمان Auto recovery صبر کرد و پس از فشار دادن مجدد دکمه ؛ هنگام خروج پیغام نمایش داده نمی شود و برنامه بدون سیو شدن بسته می شود

2-یه مشکل دیگه هم با این excel دارم که فایلشو ضمیمه کردم

meys34
شنبه 14 آبان 1390, 16:58 عصر
دوستانی که با VBA کار کردند اگر کمک کنن ممنون میشم

لااقل این برنامه رو توی سیستم خودتون امتحان کنید ببینید جواب میده یا نه.... دیگه عقلم به هیچی قد نمیده

...---... SOS ...---... SOS ...---... SOS ...---... SOS ...---... SOS ...---... SOS ...---... SOS ...---... SOS

vbhamed
یک شنبه 15 آبان 1390, 00:58 صبح
سلام

از منوي Insert گزينه Module رو انتخاب كنيد بعد به جاي دستور Public M As String توش بنويسيد Global M As String
دستور Public M As String رو هم پاك كنيد

meys34
پنج شنبه 19 آبان 1390, 17:44 عصر
یه مطلب اینجا پیدا کردم ولی سر در نیاوردم چی میگه


But I can help you with a workaround for this. If the event fires 2 or more times the Target.Value and Target.Address is allways the same. So we can store the old values and compare them if the event fires the next time. If they are equal we can exit the event. Simple but effective. :-)

http://answers.microsoft.com/en-us/office/forum/office_2003-customize/vba-error-50290-encountered-in-worksheet-change/1adce56c-a5ea-447b-a4ea-662024af85df