من با فعال سازي خصوصيت columheads در يک ليست باکس هدر آن را فعال کرده ام ولي بلد نيستم اين هدر را مقدار دهي کنم! کسي مي تونه راهنماييم کنه؟
چگونه مي توان header ليست باکس را مقدار دهي کرد؟
Collapse
X
-
-
با سلام
دیتای مورد نظر معمولا از سلول اول هر ستون آدرس داده شده مقداردهی میگردد
کد PHP:Private Sub UserForm_Initialize()
'set ListBox properties on initialization of UserForm'
With ListBox1
.ColumnHeads = True
.ColumnCount = 3
'set the ColumnWidths property of second & third columns to zero to not display them in the ListBox'
.ColumnWidths = "40;0:0"
.RowSource = "=Sheet2!A2:C6"
.MultiSelect = fmMultiSelectSingle
'specifies the column of data in a ListBox that supplies data for its Text property'
.TextColumn = 1
.BoundColumn = 3
End With
End Sub
Last edited by iranweld; 2015/12/17, 11:50. -
متشکرم،
بدون استفاده از rowsource چطور مي شود؟ کسي مي تواند بدون rowsource راهنمايي کند؟
چون من اطلاعاتم را از سه ديتاي مختلف در سه شيت متفاوت در ليست بکس بارگيري مي کنم.[SIGPIC][/SIGPIC]کامنت
-
با درود
جناب پارسای عزیز، باید عرض کنم که متاسفانه لیست باکس در vba قوی و با قابلیتهای زیاد عمل نمیکند! نمایش header در لیست باکس تقریبا نمایشی هست و کارایی خاصی به جز نمایش عنوان ستون ها ندارند و فقط در صورت استفاده از RowSource امکان پذیر هست و وارد کردن اطلاعات درون لیست باکس به سایر روش ها سبب عدم نمایش Header ها میشوند (در واقع Header نمایش داده میشود اما بدون متن). طبق فرمایش شما که اطلاعات از سه شیت متفاوت دریافت و در لیست باکس بارگذاری میکنید به نظر بنده مناسبترین روشی که وجود داره یا طبق فرمایش جناب iranweld استفاده از Label میباشد و یا اینکه شما در یک شیت مجزا یک محدوده کاملا پویا تعریف کنید و ابتدا دیتاها رو به این شیت منتقل کنید و سپس محدوده پویا رو از طریق RowSource درون لیست باکس بارگذاری کنید در این حالت اولین سطر قبل از محدوده پویا به عنوان Header در لیست باکستون نمایش داده میشه. بنده خودم زیاد از این روش استفاده میکنم.
امیدوارم خوب توضیح داده باشم و متوجه منظورم شده باشین.
موفق باشین.کامنت
-
با درود
خب یه چیزیم من بگم هر چند دیگه پیر شدم اما اگر همون سر ستون ها که هدرت باشه رو هم توی لیست باکست بیاری ( یعنی همیشه اول اونها بیان) اینجوری ردیف اولت میشه هدر . بعدش فرضا میخوای با لیست باکست یه کاریایی بکنی میتونی از ردیف دمش به بعد استفاده کنی. اینجوری تو پرینت هم سر ستون ها(هدر ها) رو هم داری.
اگر لیست باکسم به کارت نمیاد از لیست ویو listview استفاده کن. یه مسال شاده لیست باکسم زدم. هر چند همتون یه پا استادین.فایل های پیوست شدهدر پناه خداوندگار ایران زمین باشید و پیروزکامنت
-
با سلام به تمامی دوستان
ضمن اجازه از جناب آقای اسماعیلی عزیز و پوزش به خاطر جسارت و دستگاری در کد ایشان .(اصل کد متعلق به ایشان است )
فکر میکنم پایه کار درست است ولی کد مقدار تغییرات نیاز دارد.
اگر یک تکست باکس به فرم اضافه شود و مقدار درخواستی را به آن ارجاع دهیم خواهید دید که جوابها چندان درست نست ( یا بدون هدر است و یا یکی از مجموع کم است ) شاید هم در سیستم بدنه اینجور است . به هرحال کد زیر اصلاح شده کد دوست بزرگوارم جناب اسماعیلی است امید که مفید واقع شود .( باز هم معذرت خواهی از ایشان )
توضیح : به فرم یک تکست باکس اضافه کرده تا بتوانیم نام های موردنظر را در آن تایپ نمایید
با تشکر میرکد:Private Sub CommandButton1_Click() ListBox1.Clear 'define 4 column listbox ListBox1.ColumnCount = 4 'change column widhts ListBox1.ColumnWidths = "50;50;50" With ListBox1 .AddItem ListBox1.List(0, 0) = Sheet2.Range("A1").Value 'header ListBox1.List(0, 1) = Sheet2.Range("B1").Value 'header ListBox1.List(0, 2) = Sheet2.Range("C1").Value 'header ListBox1.List(0, 3) = Sheet2.Range("D1").Value 'header End With 'assing values to the columns Dim c As Range Dim i As Integer i = 2 For Each c In Sheet2.Range("A2:A20") If c.Value = TextBox1.Text Then ListBox1.AddItem ListBox1.List(i - 1, 0) = c 'data ListBox1.List(i - 1, 1) = c.Offset(0, 1) 'data ListBox1.List(i - 1, 2) = c.Offset(0, 2) 'data ListBox1.List(i - 1, 3) = c.Offset(0, 3) 'data i = i + 1 End If Next c End SubLast edited by majid_mx4; 2015/12/20, 13:26.کامنت
-
متشکرم از همه دوستان،
البته من هم اول سرستونهايم را از يکي از شيتهاي اطلاعات در ليست باکس add کردم و بعد بقيه اطلاعات را از شيتهاي مختلف بارگيري کردم (چون سر ستونها در کل شيتها يکي است)، منتهي مشکل اينجا بود که مي خواستم سر ستونها يک جوري دورش خط کشي (border) داشته باشه، بعد خصوصيت columnheads ليست باکس را فعال کردم، ولي چون با اين روش از row source استفاده نشده ديگر سر ستونها که اول بارگيري شده داخل کادر header ليست بکس قرار نمي گيرد! و هدر خالي مي ماند!
ظاهرا" ساده ترين راه همان ليبل است.
البته اگر بشود کل اطلاعاتي که بارگيري مي شود دورشان خط کشي ايجاد کرد (يعني مثل يک جدول بشود) آن هم خوب است. که نمي دانم اون هم امکان پذير هست يا نه؟![SIGPIC][/SIGPIC]کامنت
-
با درود
خواهش میکنمم استاد. حق با شماست. بابت اشتباه عذر خواهی میکنم. بزارین پای سواد و پیری ما که سوادمون نم کشیده. حق با شماست قبلش باید هدر ها بارگیری بشن. و بعد ردیف های دیگه. تو حلقه اشتباه بود
بازم عذر میخوامدر پناه خداوندگار ایران زمین باشید و پیروزکامنت



کامنت