سلام
میخوام مثلا برای listbox با لوپ کد بنویسم که خودش به تعداد شیتها نام هر شیت رو در خودش لیست کنه و تا اینجا اومدم:
کد php:
Private Sub Worksheet_Activate()
Dim ShitCunt As Integer
ShitCunt = Worksheets.Count
Dim i As Integer
i = 1
Me.Listshit.Clear
For i = 1 To ShitCunt Step 1
Me.Listshit.AddItem "Sheet" & i, i
Next
Me.Listshit.ListIndex = 0
End Sub
در قسمت لوپ برای آرگومان AddItem میخوام ترکیبی از عبارت sheet و شمارهای که از متغیر گرفتهم و توی لوپ انداختم باشه ولی نمیشه.
شبیه این کار رو جاهای دیگه هم خواستم بکنم ولی نشد. اگر همه رو داخل دبلکتیشن بگذارم نام متغیر تکست خونده میشه؛ اگر نذارم خطا میده؛ اگرم از ترکیبی که میبینید استفاده کنم نمیشه؛ اینطوری هم کردم نشد: Sheets(i)
بطوری کلی همچینی ترکیبی از متن و متغیر در آرگومانهای vba ممکنه؟
در خط:
کد php:
Me.Listshit.AddItem "Sheet" & i, i
اون i دومی واسه چیه؟
تغییرش دادم به کد زیر کار کرد
کد php:
Me.Listshit.AddItem "Sheet" & i
و این راه بهترین راه واسه بدست آوردن نام شیت ها نیست!!! اگه اسم شیت رو تغییر داده بودیم چی؟
با کد زیر اسم تمام شیت ها رو بدست میاریم:
کد php:
Dim mySheet As Worksheet
For Each mySheet In Worksheets
Listshit.AddItem mySheet.Name
Next mySheet
درسته، متوجه شدم که راه اشتباهیه. بهجای ساختن اسم شیت باید صداش کنم.
از راهنماییتون متشکرم.
ولی درواقع سوال اصلی این بود که مثلا اگر بخوام یه لوپ بنویسم که در اون آدرسدهی رنج بهصورت A1 رو با متغییر تغییر بدم؛ مثلا به این شکل: Ai و i متغیری باشه هی عوض بشه؛ با توجه به اینکه رنج رو بهشکل "A1" مینویسیم؛ چطور در آرگومان اینچنینی متن رو با متغیر ترکیب کنم؟
به جوابی که دادم دقت کنید؛
من ۲ تا جواب دادم خدمتتون!
جواب اولی مربوط به این بودکه یک متغیر و متن ثابت رو ترکیب میکرد
جواب دومی مربوط به اسم شیتها!
منظورتون اینه: Me.Listshit.AddItem "Sheet" & i خطا داد و کار نکرد.
لطفا بفرمایید اسم این کار در vba چیه که بتونم توی منوال اکسل یا آنلاین یا کتابها پیدا کنم، چون موفق نشدم.
اون i دوم ایندکس اعضای لیست بود که البته نفهمیدم چرا عمل نکرد؛ نه برای ComboBox نه برای ListBox.
ببخشید یه توضیحی درباره خودم بدم؛ بنده قبلا با زبان دیگه کار کردهام که تحت وب بود که مدتی گذشته و متاسفانه فراموش کردم. حالا دارم VBA توی خونه با کتاب یاد میگیرم.
(۰۱-مرداد-۱۳۹۳, ۱۲:۱۲:۰۱)eppagh نوشته است: [ -> ]منظورتون اینه: Me.Listshit.AddItem "Sheet" & i خطا داد و کار نکرد.
اسم لیست باکستون رو به Listshit تغییر بدید درست کار میکنه..
جواب سوالم رو پیدا کردم. برای دیگران اینجا مینویسم:
سوال این بود که مثلا داخل این کد چطور میشه با ترکیب نوشته و متغیر مقدار داد:
میشه عبارت A1:C5 فرضی رو جداگانه با متغیر و نوشته ساخت و بعد م تغیر رو بدون دبلکتیشن داخل رنج گذاشت:
کد php:
dim CName As string
CName = "A1"
dim RName As String
RName = "C5"
dim RngName As String
RngName = RName & ":" & CName
Range(RngNAme)
که در این صورت مانند این خواهد بود که نوشته باشید
از این گذشته متوجه شدم که آبجک Range و Cells دارای Peroperty هستند به نام Name که میشود با آن کار کرد.
همچنین در آبجک Cells علاوه بر Name مقدار Row و Column هم دارد.