PDA

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



zxcvbn
2015/11/29, 21:44
با سلام خدمت دوستان

چرا هرکاری میکنم باوجود اینکه دیتای من در شیت اکسل راست چین هست، اما وقتی وارد لیست باکس می شود ، هنگام نمایش بصورت چپ به راست نمایش می دهد؟
منظور خودم را بصورت تصویر ارائه می دهم.:
9564

9565

در ضمن به هیچ هنوان هم سربرگ روی لیست باکس من نمی آید.
دستورش رو هم می گذارم تا ملاحظه بفرمایید


Public Sub addlist()
Dim n, col
n = 2

col = WorksheetFunction.CountA(Sheet3.Range("1:1"))
ListBox1.ColumnCount = col + 1
ListBox1.Clear

Do While Sheet3.Cells(n, 1) <> Empty
ListBox1.AddItem Sheet3.Cells(n, 6) 'n - 1 ' c.Row - 1
For i = 0 To col
ListBox1.List(ListBox1.ListCount - 1, i + 1) = Sheet3.Cells(n, i + 1) ' c.Value
Next i

n = n + 1
Loop
End Su[/LTR][/RTL][/LTR]b

iranweld
2015/11/29, 22:32
با سلام

کد ذیل را به کدهای خود اضافه کنید

TextBox1.TextAlign = HorizontalAlignment.Right

abootorab
2015/11/30, 02:39
با سلام خدمت دوستان

چرا هرکاری میکنم باوجود اینکه دیتای من در شیت اکسل راست چین هست، اما وقتی وارد لیست باکس می شود ، هنگام نمایش بصورت چپ به راست نمایش می دهد؟
منظور خودم را بصورت تصویر ارائه می دهم.:
9564

9565

در ضمن به هیچ هنوان هم سربرگ روی لیست باکس من نمی آید.
دستورش رو هم می گذارم تا ملاحظه بفرمایید

Public Sub addlist()
Dim n, col
n = 2

col = WorksheetFunction.CountA(Sheet3.Range("1:1"))
ListBox1.ColumnCount = col + 1
ListBox1.Clear

Do While Sheet3.Cells(n, 1) <> Empty
ListBox1.AddItem Sheet3.Cells(n, 6) 'n - 1 ' c.Row - 1
For i = 0 To col
ListBox1.List(ListBox1.ListCount - 1, i + 1) = Sheet3.Cells(n, i + 1) ' c.Value
Next i

n = n + 1
Loop
End Su[/LTR][/RTL][/LTR]b



با درود و تشکر از جناب iranweld
دوست عزیز در مورد راستچین کردن ListBox شما میبایست ابتدا در پنجره تنظیمات UserForm گزینه RightToLeft رو به حالت True تغییر دهید.
در مورد نمایش سرستونها باید عرض کنم: ابتدا اینکه شما می بایست در پنجره تنظیمات ListBox یا توسط دستور در خود vb گزینه ColumnHeads را در وضعیت True قرار دهید تا امکان نمایش سرستونها مهیا شود و اما در حالتی که شما با استفاده از دستور AddItem مقادیر ListBox را اضافه میکنید امکان نمایش سرستونها وجود ندارد (یا حداقل بنده بلد نیستم)!

بنده راه حل ساده تر و مناسبتری برای رفع مشکلتون پیشنهاد میکنم:
1. ابتدا در شیت مورد نظرتون یک محدوده پویا تعریف کنید. برای این کار به سربرگ FORMULAS رفته و گزینه Name Manager را کلیک کنید، در پنجره ظاهر شده روی New کلیک کنید و در پنجره New Name ابتدا یک نام دلخواه را (مثلا Data) در قسمت Name وارد کنید و سپس در قسمت Refers to فرمول زیر را وارد و Ok کنید و در نهایت از پنجره Name Manager خارج شوید.


=OFFSET(!$A$1;1;0;COUNTA(!$A:$A)-1;COUNTA(!$1:$1))

با این کار محدوده پویا جهت داده ها تعریف میشود.

2. در پنجره تنظیمات ListBox و یا توسط دستور در خود vb این محدوده را به گزینه RowSource نسبت دهید:



Me.ListBox1.RowSource="Data"

با این روش شما هم سرستونها رو در لیست باکستون مشاهده میکنید و هم اینکه با اضافه یا کم کردن یک سطر یا ستون بصورت خودکار درون لیست باکستون این تغییرات اعمال میشود.

یک فایل نمونه از عرایضم آماده و ضمیمه کردم که بهتر بتونید استفاده کنید.
امیدوارم واستون مفید واقع شود، موفق باشین.

zxcvbn
2015/12/02, 21:48
آقاي ابوتراب عزيز

مثل هميشه قدرتمند و عالي

واقعا لذت مي برم وقتي مي بينم شما تا اين حد به موضوع مسلط هستيد و دقيقا منو به هدفم مي رسونيد.
از لطف شما بي نهايت سپاسگذارم.

موضوع RightToLeft بودن userform اصلا به ذهنم نرسيد چون همش تو تنظيمات list box دنبال همچين چيزي بودم.
درمورد لود شدن ديتا به اين حالت در ليست باكس هم واقعا موضوع جديدي بود.خصوصا استفاده از فرمول offset كه برام تازگي داشت.مي دونم هدف از نوشتن اين فرمول چيه.ولي از منطقش سر در نياوردم.
بهر حال عالي بود.
ممنون

amirghadiri
2015/12/02, 23:08
با عرض سلام خدمت همه اساتید بزرگوار سایت بخصوص استاد ابوتراب
من هم از طرف خودم خدمت استاد عزیز نهایت تشکر و ارزوی موفقیت روزافزون دارم ایان واقعن بهترین راه حل را ارائه میدهند من هم به چندین نوبت به بهترین روش جوابم را گرفتم امیدوارم که همیشه در سایت حضور داشته باشن.
با تشکر فراوان از استاد ابوتراب.:wcom: