ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Problem number One (https://www.excelbanter.com/excel-programming/291847-problem-number-one.html)

Robert Couchman[_4_]

Problem number One
 
Hello all,

i have a problem with my VB project...

i have a user form that should display a list of dates in
a column, dependent on the data held in column "AX" on a
spreadsheet. i have this bit of code already in my program
but...

Dim rng As Range
Dim v As Variant
Dim coll As Collection
Set coll = New Collection
Set rng = Range("AX1")
On Error Resume Next
Do Until rng.Value = ""
coll.Add rng.Text, rng.Text
Set rng = rng(2, 0)
Loop
With timetable.ComboBox1
For Each v In coll
.AddItem
Next v
.ListIndex = 0
End With
timetable.Show

....when ran, it just shows empty fields in the list!!!!

and....

also not all the records in column "AX" have dates in,
therefore it will end as soon as it hits a blanc cell.

can anyone help?? and i need it to find all the results
until it reaches my final row!

thank you,

Robert Couchman

Bob Phillips[_6_]

Problem number One
 
Robert,

You are not loading the combobox, so that is why you see nothing. But why
are you loading via a collection, it seems to serve no purpose that I can
ascertain.
Try this

Dim rng As Range
Dim v As Variant
Dim coll As Collection
Dim i As Long

Set coll = New Collection
Set rng = Range("AX1")
With timetable.Combobox1
For i = 1 To Cells(Rows.Count, "AX").End(xlUp).Row
If Cells(i, "AX").Value < "" Then
.AddItem Format(Cells(i, "AX"), "dd mmm yyyy")
End If
Next i
.ListIndex = 0
End With
timetable.Show



--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Robert Couchman" wrote in message
...
Hello all,

i have a problem with my VB project...

i have a user form that should display a list of dates in
a column, dependent on the data held in column "AX" on a
spreadsheet. i have this bit of code already in my program
but...

Dim rng As Range
Dim v As Variant
Dim coll As Collection
Set coll = New Collection
Set rng = Range("AX1")
On Error Resume Next
Do Until rng.Value = ""
coll.Add rng.Text, rng.Text
Set rng = rng(2, 0)
Loop
With timetable.ComboBox1
For Each v In coll
.AddItem
Next v
.ListIndex = 0
End With
timetable.Show

...when ran, it just shows empty fields in the list!!!!

and....

also not all the records in column "AX" have dates in,
therefore it will end as soon as it hits a blanc cell.

can anyone help?? and i need it to find all the results
until it reaches my final row!

thank you,

Robert Couchman




Robert Couchman[_4_]

Problem number One
 
Bob,

thank you for the help!! at least now i can see my
values!!!
the only problems i have though are the following...

1) i seem to get the column heading appear in my list (not
needed!)

2) the data in the records appears more than once,
therefore i seem to get the same date appearing in my list

3) the combobox auto selects the first result (need a
blank cell)

4) the data is not in an order, it appears as it does in
my records (need a sort function)

but... the code actually works ok,

so thank you!

Robert Couchman

Bob Phillips[_6_]

Problem number One
 
Robert,

Now I know why you had a collection<G.

Try this instead

Dim v As Variant
Dim coll As Collection
Dim i As Long

Set coll = New Collection
Set rng = Range("AX2")
On Error Resume Next
For i = 1 To Cells(Rows.Count, "AX").End(xlUp).Row
If Cells(i, "AX").Value < "" Then
coll.Add Cells(i, "AX").Text, Cells(i, "AX").Text
End If
Next i
On Error GoTo 0
With timetable.Combobox1
For Each v In coll
.AddItem v
Next v
.ListIndex = 0
End With
timetable.Show

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Robert Couchman" wrote in message
...
Bob,

thank you for the help!! at least now i can see my
values!!!
the only problems i have though are the following...

1) i seem to get the column heading appear in my list (not
needed!)

2) the data in the records appears more than once,
therefore i seem to get the same date appearing in my list

3) the combobox auto selects the first result (need a
blank cell)

4) the data is not in an order, it appears as it does in
my records (need a sort function)

but... the code actually works ok,

so thank you!

Robert Couchman




Robert Couchman[_4_]

Problem number One
 
Hello Bob,

***1) i seem to get the column heading appear in my list
(not needed!)***

NO LONGER A PROBLEM!!!

i noticed that i was counting from 1 where row 1 is the
column headings, therefore if the 1 was changed to a 2,
then it would count from the first data entry!

thank you,

now for the other problems!!!!

Robert Couchman



Robert Couchman[_4_]

Problem number One
 
Hello Bob,

good news we have managed to illiminate 3 out of 4 of my
original problems in less than half an hour!!

3) the combobox auto selects the first result (need a
blank cell)


**answer** set the listindex to -1 so when it opens it has
a record that is blank!!!!

4) the data is not in an order, it appears as it does in
my records (need a sort function)


Now for this final question, how do we sort the data so it
appears in the list in a logical order???

thank you,

Robert Couchman

Bob Phillips[_6_]

Problem number One
 
Hi Robert,

Final problem

Dim rng As Range
Dim v As Variant
Dim coll As Collection
Dim i As Long

Set coll = New Collection
Set rng = Range("AX2")
Columns("AX:AX").Sort Key1:=Range("AX2"), _
Order1:=xlAscending, _
Header:=xlYes
On Error Resume Next
For i = 2 To Cells(Rows.Count, "AX").End(xlUp).Row
If Cells(i, "AX").Value < "" Then
coll.Add Cells(i, "AX").Text, Cells(i, "AX").Text
End If
Next i
On Error GoTo 0
With timetable.Combobox1
For Each v In coll
.AddItem v
Next v
.ListIndex = 0
End With
timetable.Show

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Robert Couchman" wrote in message
...
Hello Bob,

good news we have managed to illiminate 3 out of 4 of my
original problems in less than half an hour!!

3) the combobox auto selects the first result (need a
blank cell)


**answer** set the listindex to -1 so when it opens it has
a record that is blank!!!!

4) the data is not in an order, it appears as it does in
my records (need a sort function)


Now for this final question, how do we sort the data so it
appears in the list in a logical order???

thank you,

Robert Couchman




Robert Couchman[_4_]

Problem number One
 
Hi Bob,

seems ok except for one slight hickup!!

if i was to sort column ("AX:AX") then it will effect all
my records!!!

is there not any logical way to sort the data held in my
collection??

just thought i would ask!!!

thank you,

Robert Couchman

Bob Phillips[_6_]

Problem number One
 
Robert,

I just saw your other post and was going to add to this.

Could you not sort the whole records, that is Columns("AX:BY") or whatever
they span?

If you must sort the collection, that is a bit trickier as we are storing
date strings, so we will need to change that, and then format the date in
the combo again

Dim rng As Range
Dim v As Variant
Dim coll As Collection
Dim i As Long
Dim j As Long
Dim tmp1, tmp2

Set coll = New Collection
Set rng = Range("AX2")

On Error Resume Next
For i = 2 To Cells(Rows.Count, "AX").End(xlUp).Row
If Cells(i, "AX").Value < "" Then
coll.Add Cells(i, "AX").Value, Cells(i, "AX").Text
End If
Next i
On Error GoTo 0

For i = 1 To coll.Count - 1
For j = i + 1 To coll.Count
If coll(i) coll(j) Then
tmp1 = coll(i)
tmp2 = coll(j)
coll.Add tmp1, befo=j
coll.Add tmp2, befo=i
coll.Remove i + 1
coll.Remove j + 1
End If
Next j
Next i

With timetable.Combobox1
For Each v In coll
.AddItem Format(v, "dd mmm yyyy")
Next v
.ListIndex = 0
End With
timetable.Show

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Robert Couchman" wrote in message
...
Hi Bob,

seems ok except for one slight hickup!!

if i was to sort column ("AX:AX") then it will effect all
my records!!!

is there not any logical way to sort the data held in my
collection??

just thought i would ask!!!

thank you,

Robert Couchman




Tom Ogilvy

Problem number One
 
Mark this away for the future

John Walkenbach's site:

http://j-walk.com/ss/excel/tips/tip47.htm
Fill a ListBox With Unique Items

Comboxbox, listbox would be the same.

--
Regards,
Tom Ogilvy



"Robert Couchman" wrote in message
...
Hi Bob,

seems ok except for one slight hickup!!

if i was to sort column ("AX:AX") then it will effect all
my records!!!

is there not any logical way to sort the data held in my
collection??

just thought i would ask!!!

thank you,

Robert Couchman





All times are GMT +1. The time now is 11:49 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com