Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 21
Default Userform List Boxes Load Very Slowly

I have a userform with two listboxes that is taking too
long to show up on the screen. The listboxes are filled
with the filenames in a subdirectory. The code works, but
it's just way too slow. Can anyone tell me what's wrong
with the code? Here it is:

Private Sub UserForm_Initialize()

'Make a list of filenames

Dim Directory As String
Dim i As Integer
Dim Listnum As Integer
Dim Item As Variant

Directory = Range("Inputsubdirectory").Value

'Fill ListBox1 with portfolios
On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = Directory
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox1.AddItem Dir(.FoundFiles(i)) 'Use
DIR to show only filename in listbox
Next i
End With

'Fill ListBox2 with default benchmark choices
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path & "\Benchmark Weights\"
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox2.AddItem Dir(.FoundFiles(i))
Next i
End With

'Pick S&P 500 as default benchmark to highlight in
ListBox2
Listnum = -1
For Each Item In ListBox2.list
Listnum = Listnum + 1
If Item = "S&P 500.xls" Then
ListBox2.SetFocus
ListBox2.ListIndex = Listnum
Exit For
End If
Next Item

End Sub
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Userform List Boxes Load Very Slowly

Instead of using Dir to get the filename, use

Dim sName as String

sName = .Foundfile(i)
ListBox1.AddItem right(sName,len(sname)-Instrrev(sName,"\"))


sName = .Foundfile(i)
ListBox2.AddItem right(sName,len(sname)-Instrrev(sName,"\"))

This requires xl2000 or later since InstrRev was added in that version.

so it may not be an option for you.

I would also get the index number of the S&P entry in the loop to add the
items and skip the additional loop

If Instr(sName,"S&P 500.xls") 0 then
idex = Listbox2.Listcount - 1
End if

--
Regards,
Tom Ogilvy


"Stratuser" wrote in message
...
I have a userform with two listboxes that is taking too
long to show up on the screen. The listboxes are filled
with the filenames in a subdirectory. The code works, but
it's just way too slow. Can anyone tell me what's wrong
with the code? Here it is:

Private Sub UserForm_Initialize()

'Make a list of filenames

Dim Directory As String
Dim i As Integer
Dim Listnum As Integer
Dim Item As Variant

Directory = Range("Inputsubdirectory").Value

'Fill ListBox1 with portfolios
On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = Directory
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox1.AddItem Dir(.FoundFiles(i)) 'Use
DIR to show only filename in listbox
Next i
End With

'Fill ListBox2 with default benchmark choices
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path & "\Benchmark Weights\"
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox2.AddItem Dir(.FoundFiles(i))
Next i
End With

'Pick S&P 500 as default benchmark to highlight in
ListBox2
Listnum = -1
For Each Item In ListBox2.list
Listnum = Listnum + 1
If Item = "S&P 500.xls" Then
ListBox2.SetFocus
ListBox2.ListIndex = Listnum
Exit For
End If
Next Item

End Sub



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 21
Default Userform List Boxes Load Very Slowly

Tom,

Thanks for your suggestions. I tried them, and they help
a little bit. But I found that a much bigger part of the
slowdown seems to be caused by the way I am assigning the
Lookin command to the network drive in the file path,
which is "\\SIGNAS\SIM\...". When I change the file path
to its literal mapped drive letter on my PC, which
is "J:\...", there is a huge pickup in speed in this
subroutine. But since my drive mapping could change, and
another user might have a different drive letter letter on
his PC, I'd like to leave the file reference as in terms
that the network will always understand. Any
suggestions?




-----Original Message-----
Instead of using Dir to get the filename, use

Dim sName as String

sName = .Foundfile(i)
ListBox1.AddItem right(sName,len(sname)-Instrrev

(sName,"\"))


sName = .Foundfile(i)
ListBox2.AddItem right(sName,len(sname)-Instrrev

(sName,"\"))

This requires xl2000 or later since InstrRev was added in

that version.

so it may not be an option for you.

I would also get the index number of the S&P entry in the

loop to add the
items and skip the additional loop

If Instr(sName,"S&P 500.xls") 0 then
idex = Listbox2.Listcount - 1
End if

--
Regards,
Tom Ogilvy


"Stratuser" wrote

in message
...
I have a userform with two listboxes that is taking too
long to show up on the screen. The listboxes are filled
with the filenames in a subdirectory. The code works,

but
it's just way too slow. Can anyone tell me what's wrong
with the code? Here it is:

Private Sub UserForm_Initialize()

'Make a list of filenames

Dim Directory As String
Dim i As Integer
Dim Listnum As Integer
Dim Item As Variant

Directory = Range("Inputsubdirectory").Value

'Fill ListBox1 with portfolios
On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = Directory
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox1.AddItem Dir(.FoundFiles

(i)) 'Use
DIR to show only filename in listbox
Next i
End With

'Fill ListBox2 with default benchmark choices
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path & "\Benchmark

Weights\"
.Filename = "*.xls*"
.SearchSubFolders = False
.Execute

For i = 1 To .FoundFiles.Count
ListBox2.AddItem Dir(.FoundFiles(i))
Next i
End With

'Pick S&P 500 as default benchmark to highlight in
ListBox2
Listnum = -1
For Each Item In ListBox2.list
Listnum = Listnum + 1
If Item = "S&P 500.xls" Then
ListBox2.SetFocus
ListBox2.ListIndex = Listnum
Exit For
End If
Next Item

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
Why does excel load more slowly since I switched to McAfee antivi Jim in Alaska Excel Discussion (Misc queries) 2 February 5th 09 10:02 PM
How to load a listbox in a userform? Martin Excel Discussion (Misc queries) 3 July 25th 07 03:16 PM
UserForm Wont Load Minitman[_4_] Excel Programming 6 April 29th 04 07:49 AM
new error when try to load userform izchk shtifman Excel Programming 1 December 30th 03 06:09 PM
Load a Userform Nick Excel Programming 1 September 10th 03 03:24 PM


All times are GMT +1. The time now is 10:02 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"