Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35
Default Is refreshing listbox rowsource in listbox click event possible?

Explanation:
The source data the listbox contains is in columns A, B and C of Sheet1. I
use the rowsource property so the listbox list can have headers.
"WorkList" is a dynamically updating named range. When a selection is made
in Listbox1, the selection is moved to the top of the list on Sheet1 and the
rest of the list is sorted. Everything works great to that point, the
problem is that when I reset the RowSource property, the Listbox1 list
doesn't get updated. I assume this is because it is from Listbox1's click
event, as it works if I do the same thing from another procedure. Am I
doing something wrong, or is there possibly another way to accomplish this?

Thanks!
-Jeremy

----------------------------------------------------------------------------
Private Sub Listbox1_Click()
Dim rng As Range

If DisableFormEvents Then Exit Sub

With Worksheets("Sheet1")
Set rng = .Columns(1).Find(What:=Me.Listbox1, LookIn:=xlValues)
Range(rng, rng(1, 3)).Cut
.Range("A2").Insert Shift:=xlDown
With Range(.Range("A3"), .Cells(.Rows.Count, 26).End(xlUp))
.Sort Key1:=Range("A3"), Order1:=xlAscending,
End With
DisableFormEvents = True
Me.Listbox1.RowSource = _
.Names("WorkList").RefersToRange.Address(External: =True)
DisableFormEvents = False
End With

End Sub
----------------------------------------------------------------------------









  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 16
Default Is refreshing listbox rowsource in listbox click event possible?

I have a project with a similar process.

I "think" the problem is the Exit Event hasn't occured for
your listbox. I notice that changes to my table visually
inside my listbox arn't reflected until focus is passed to
another control, but if a change is made to the table
outside the listbox and the rowsource is reset everything
works fine.

to test this, after your last line of code in your listbox
pass focus to another control...

ie: TextBox1.SetFocus

If i'm incorrect, i would love to know why also. I fight
this often.


-----Original Message-----
Explanation:
The source data the listbox contains is in columns A, B

and C of Sheet1. I
use the rowsource property so the listbox list can have

headers.
"WorkList" is a dynamically updating named range. When a

selection is made
in Listbox1, the selection is moved to the top of the

list on Sheet1 and the
rest of the list is sorted. Everything works great to

that point, the
problem is that when I reset the RowSource property, the

Listbox1 list
doesn't get updated. I assume this is because it is from

Listbox1's click
event, as it works if I do the same thing from another

procedure. Am I
doing something wrong, or is there possibly another way

to accomplish this?

Thanks!
-Jeremy

----------------------------------------------------------

------------------
Private Sub Listbox1_Click()
Dim rng As Range

If DisableFormEvents Then Exit Sub

With Worksheets("Sheet1")
Set rng = .Columns(1).Find(What:=Me.Listbox1,

LookIn:=xlValues)
Range(rng, rng(1, 3)).Cut
.Range("A2").Insert Shift:=xlDown
With Range(.Range("A3"), .Cells(.Rows.Count, 26).End

(xlUp))
.Sort Key1:=Range("A3"), Order1:=xlAscending,
End With
DisableFormEvents = True
Me.Listbox1.RowSource = _
.Names("WorkList").RefersToRange.Address

(External:=True)
DisableFormEvents = False
End With

End Sub
----------------------------------------------------------

------------------









.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 16
Default Is refreshing listbox rowsource in listbox click event possible?

forgot to mention that my listbox is on a userform. not
sure if the same problem applies to one on the worksheet.

i'll try it and post back...

-----Original Message-----
Explanation:
The source data the listbox contains is in columns A, B

and C of Sheet1. I
use the rowsource property so the listbox list can have

headers.
"WorkList" is a dynamically updating named range. When a

selection is made
in Listbox1, the selection is moved to the top of the

list on Sheet1 and the
rest of the list is sorted. Everything works great to

that point, the
problem is that when I reset the RowSource property, the

Listbox1 list
doesn't get updated. I assume this is because it is from

Listbox1's click
event, as it works if I do the same thing from another

procedure. Am I
doing something wrong, or is there possibly another way

to accomplish this?

Thanks!
-Jeremy

----------------------------------------------------------

------------------
Private Sub Listbox1_Click()
Dim rng As Range

If DisableFormEvents Then Exit Sub

With Worksheets("Sheet1")
Set rng = .Columns(1).Find(What:=Me.Listbox1,

LookIn:=xlValues)
Range(rng, rng(1, 3)).Cut
.Range("A2").Insert Shift:=xlDown
With Range(.Range("A3"), .Cells(.Rows.Count, 26).End

(xlUp))
.Sort Key1:=Range("A3"), Order1:=xlAscending,
End With
DisableFormEvents = True
Me.Listbox1.RowSource = _
.Names("WorkList").RefersToRange.Address

(External:=True)
DisableFormEvents = False
End With

End Sub
----------------------------------------------------------

------------------









.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 16
Default Is refreshing listbox rowsource in listbox click event possible?

I tested on a userform using 2 ranges "test" & "test1"

used the line of code:

Private Sub ListBox1_AfterUpdate()
If ListBox1.RowSource = "test1" Then
ListBox1.RowSource = "test"
End If
End Sub


this would only work properly AFTER the change event
so I guess my previous post was a mistake...
Hope this helps...




-----Original Message-----
Explanation:
The source data the listbox contains is in columns A, B

and C of Sheet1. I
use the rowsource property so the listbox list can have

headers.
"WorkList" is a dynamically updating named range. When a

selection is made
in Listbox1, the selection is moved to the top of the

list on Sheet1 and the
rest of the list is sorted. Everything works great to

that point, the
problem is that when I reset the RowSource property, the

Listbox1 list
doesn't get updated. I assume this is because it is from

Listbox1's click
event, as it works if I do the same thing from another

procedure. Am I
doing something wrong, or is there possibly another way

to accomplish this?

Thanks!
-Jeremy

----------------------------------------------------------

------------------
Private Sub Listbox1_Click()
Dim rng As Range

If DisableFormEvents Then Exit Sub

With Worksheets("Sheet1")
Set rng = .Columns(1).Find(What:=Me.Listbox1,

LookIn:=xlValues)
Range(rng, rng(1, 3)).Cut
.Range("A2").Insert Shift:=xlDown
With Range(.Range("A3"), .Cells(.Rows.Count, 26).End

(xlUp))
.Sort Key1:=Range("A3"), Order1:=xlAscending,
End With
DisableFormEvents = True
Me.Listbox1.RowSource = _
.Names("WorkList").RefersToRange.Address

(External:=True)
DisableFormEvents = False
End With

End Sub
----------------------------------------------------------

------------------









.

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35
Default Is refreshing listbox rowsource in listbox click event possible?

Hi Jim. I actually sent this yesterday at 9:55 AM, but it never got posted.
My listbox is also on a userform, and I got it! I had been playing with the
AfterUpdate event after I made my post, and your right, its the only way to
get the list to update, but the problem is that it creates a continuous loop
as the AfterUpdate event fires again and again when the Rowsource is
changed.

Using your example, here's how I got around the loop.

----------------------------------------------------------------------------
Public DisableAfterUpdate as Boolean
Public DisableFormEvents as Boolean

Private Sub Listbox1_AfterUpdate()

If DisableAfterUpdate Then Exit Sub
DisableAfterUpdate = True
DisableFormEvents = True
With Userform1.Listbox1
If .RowSource = Worksheets(1).Names("Test1") _
.RefersToRange.Address(External:=True) Then
.RowSource = _
Worksheets(1).Names("Test").RefersToRange.Address( External:=True)
End If
End With
DisableFormEvents = False

End Sub

Private Sub Listbox1_Click()

If DisableFormEvents Then Exit Sub
DisableAfterUpdate = False

'Code that changes "Test" and/or "Test1"

End Sub
----------------------------------------------------------------------------


jim c. wrote:
I tested on a userform using 2 ranges "test" & "test1"

used the line of code:

Private Sub ListBox1_AfterUpdate()
If ListBox1.RowSource = "test1" Then
ListBox1.RowSource = "test"
End If
End Sub


this would only work properly AFTER the change event
so I guess my previous post was a mistake...
Hope this helps...




-----Original Message-----
Explanation:
The source data the listbox contains is in columns A, B and C of
Sheet1. I use the rowsource property so the listbox list can have
headers. "WorkList" is a dynamically updating named range. When a
selection is made in Listbox1, the selection is moved to the top of
the list on Sheet1 and the rest of the list is sorted. Everything
works great to that point, the problem is that when I reset the
RowSource property, the Listbox1 list doesn't get updated. I assume
this is because it is from Listbox1's click event, as it works if I
do the same thing from another procedure. Am I doing something
wrong, or is there possibly another way to accomplish this?

Thanks!
-Jeremy

----------------------------------------------------------
Private Sub Listbox1_Click()
Dim rng As Range

If DisableFormEvents Then Exit Sub

With Worksheets("Sheet1")
Set rng = .Columns(1).Find(What:=Me.Listbox1, LookIn:=xlValues)
Range(rng, rng(1, 3)).Cut
.Range("A2").Insert Shift:=xlDown
With Range(.Range("A3"), .Cells(.Rows.Count, 26).End (xlUp))
.Sort Key1:=Range("A3"), Order1:=xlAscending,
End With
DisableFormEvents = True
Me.Listbox1.RowSource = _
.Names("WorkList").RefersToRange.Address (External:=True)
DisableFormEvents = False
End With

End Sub
----------------------------------------------------------



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Listbox rowsource on Userform Wendy Excel Discussion (Misc queries) 6 February 28th 08 05:46 PM
capture listbox click Joanne New Users to Excel 13 July 7th 07 01:00 PM
ListBox Click Event BHatMJ Excel Discussion (Misc queries) 6 June 21st 07 09:34 PM
???Help??? Userform.Listbox.rowsource = ??? Steve Sparti Excel Discussion (Misc queries) 0 March 1st 06 09:44 PM
listbox rowsource Christy[_2_] Excel Programming 4 September 20th 03 11:44 PM


All times are GMT +1. The time now is 09:43 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"