PDA

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



intro
2012/03/28, 19:29
سلام
من يه يوزر فرمي دارم كه چندين ليبل و تكست باكس را داره كه باكليك روي كامند اطلاعات موجود در تكستها به سلهاي تعريف شده وارد ميشن .
آيا امكان داره كه قبل از كليك كامند بتونم چند تا تكست را باهم جمع كنم ودر يه ليبل نشان بدم.
البته من اين كار رو به صورت زير انجام دادم ولي جواب نگرفتم.
Private Sub UserForm_Activate()
UserForm1.Label25.Caption = TextBox1.Value + TextBox2.Value
End Sub

~M*E*H*D*I~
2012/03/28, 19:48
سلام
منظور شما ازجمع کردن ، جمع کردن 2 عدد باهمه یا نه اتصال 2 متن باهم؟

mahsa shayesteh
2012/03/28, 19:53
سلام
من اطلاعاتم اونقد زیاد نیس ولی فک نکنم کپشن عدد بگیره شما باید عدد رو تو یه متغیر ذخیره کنی بعد متغیر رو با & به کپشن وصل کنی اگه فایلو ضمیمه میکردین بهتر میشد جواب داد

khakzad
2012/03/28, 20:00
سلام
اگه عدد باشه، ایتطوری جواب میده.
اما اگر متن هست به گفته خانم شایسته باید عطف بشه با & .

~M*E*H*D*I~
2012/03/28, 20:04
اگه بخواد عدد بگیره باید کپشن رو برداره یعنی بعد از lable25 مساوی بذاره

khakzad
2012/03/28, 20:07
اهان .بله.به اون دقت نکردم

~M*E*H*D*I~
2012/03/28, 20:08
intro جان ما منتظر جوابیم چی شد بالاخره

Javid Mokhtari
2012/03/29, 12:46
سلام
من يه يوزر فرمي دارم كه چندين ليبل و تكست باكس را داره كه باكليك روي كامند اطلاعات موجود در تكستها به سلهاي تعريف شده وارد ميشن .
آيا امكان داره كه قبل از كليك كامند بتونم چند تا تكست را باهم جمع كنم ودر يه ليبل نشان بدم.
البته من اين كار رو به صورت زير انجام دادم ولي جواب نگرفتم.
Private Sub UserForm_Activate()
UserForm1.Label25.Caption = TextBox1.Value + TextBox2.Value
End Sub



با سلام.
بذارید اول یه چیزی رو توضیح بدم:
همانطور که رشته ی الحاقی "&" عمل پیوند رو انجام می دهد،"+" هم می تواند همین عمل را انجام دهد .یعنی وقتی ما می نویسیم:
UserForm1.Label25.Caption = TextBox1.Value + TextBox2.Value
Lebel25 ،مقادیر باکس 1 و 2 را به هم پیوند میدهد و جمع نمی کند.برای اینکه از این عمل جلوگیری شود ابتدا باید مقادیر از رشته به عدد تبدیل شود.یعنی به شکل زیر:

UserForm1.Label25.Caption = Val(TextBox1.Value) + Val(TextBox2.Value
در اینصورت اگر بعد از عدد متنی هم واقع شود باز قسمت عددی را انتخاب و با عدد مورد نظر جمع می کند.ولی اگر عدد بعد از متن قرار بگیرد، دیگر عدد را جزء رشته دانسته و عملی بر روی آن انجام نمی دهد.

اما در مورد مقدار گرفتن label بدون استفاده از کامند:
خب،میشه از راههای متنوعی استفاده کرد.مثل Mouse Move،Mouse Up , ...

اما پیشنهاد من روش زیر است:
Private Sub UserForm_Initialize()
TextBox1.Value = 5
TextBox2.Value = 10
UserForm1.Label1.Caption = Val(TextBox1.Value) + Val(TextBox2.Value)
End Sub

intro
2012/03/29, 13:41
سلام خدمت دوستان
فايل به پيوست تقديم ميگردد
http://www.shakheh.com/up/uploads/1431051329.rar

Javid Mokhtari
2012/03/29, 13:54
[quote=intro]
سلام خدمت دوستان
فايل به پيوست تقديم ميگردد

با سلام.
دوست عزیز مثل اینکه به توضیحات بالا توجهی نکردید.

intro
2012/03/29, 17:29
سلام آقا جاويد
البته كه فرمايشاتون رو خوندم توضيحات دوستان كامل بود از راهنماييتون ممنونم . بله قبلا اين مطالب رو ننوشته بودم . ولي بايد به بزرگي خودتون ببخشيد اشكال از بنده است كه شاگرد خوبي نيستم و نتونستم توضيحات كافي بدم .
درفايل زير يه يوزر فرم گذاشتم كه براي هرفردي تعدادي تكست باكس وجود داره درست عين شيت اكسل . مي خوام كه همزمان با وارد كردن اطلاعات در يوزر فرم اين اطلاعات به شيت و سل مربوطه منتقل شده و همزمان ليبل مقابل ( يعني ليبل 25) جمع رو نشان بده و همينطور ليبل 27 هم متوسطي كه از سل j70 بدست مياد را نشان بده .
ليبل (http://www.shakheh.com/up/uploads/1427087313.rar)
از راههايي هم كه فرموديد رفتم ولي هركدام مستلزم اينه كه مثلا موس را روي ليبل ببرم و ياروي اون كليك كنم و...

Javid Mokhtari
2012/04/19, 16:18
با سلام.
برای اینکه به محض وارد کردن اطلاعات داخل TextBox،تغییرات در سلول متناظر خودش اعمال بشه ،باید از رویداد Change استفاده بشه(که خودتون این کار رو انجام دادید).یعنی باید برای هر باکس یک کد بنویسید.فکر نکنم راه دیکه ای باشه.البته تو بیسیک یک رویداد به نام Load وجود داره که کار رو آسون میکنه ولی متاسفانه تو اکسل همچین رویدادی وجود نداره.
اما برای مقدار میانگین Label27می توان از کد زیر هم استفاده کرد:

Private Sub Worksheet_Change(ByVal Target As Range)
UserForm1.Label27.Caption = WorksheetFunction.Average((Range("j45:j68")))
End Sub