Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Need Help to Control the UDF from re-calculation

Hi Excel Experts,
Ive developed an add-in function in Excel to assist peers to pull out
accounting data from our database according to criteria like account group
number, ledger code and accounting period. This function is basically
constructed using Windows query connected to a MS Access database. It works
fine when the function is not heavily used in the spreadsheet. However, in
the case of building a profit/loss by month report, the matrix of 12 columns
(month) x 100 A/c rows (total 1200 cells) of this add-in function could be a
nightmare! It takes more than half an hour to complete the calculation on my
PC (Windows XP; CPU 3.00GHz 2GB RAM).
This time-consuming calculation process repeats every time the file is
re-opened. To avoid this function being evaluated upon opening the file, I
tried to keep the active cell value by inserting codes inside the function to
bypass the time-consuming SQL portion, but the active cell value is fact
empty and does not contain the visible value last returned by the function!

I therefore request for expertise advice in the forum. Anyone out there
wishing to help me to resolve this issue would be much appreciated.

Regards,
Steve C.



  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Need Help to Control the UDF from re-calculation

There is no simple way to keep the previous cell value in a VBA UDF.

Best thing to do would be to speed up your UDF so that it runs much faster.
I suggest you post the code of the UDF and ask for help in speeding it up.

Charles
__________________________________________________
The Excel Calculation Site
http://www.decisionmodels.com

"Steve C." wrote in message
...
Hi Excel Experts,
I've developed an add-in function in Excel to assist peers to pull out
accounting data from our database according to criteria like account group
number, ledger code and accounting period. This function is basically
constructed using Windows query connected to a MS Access database. It
works
fine when the function is not heavily used in the spreadsheet. However, in
the case of building a profit/loss by month report, the matrix of 12
columns
(month) x 100 A/c rows (total 1200 cells) of this add-in function could be
a
nightmare! It takes more than half an hour to complete the calculation on
my
PC (Windows XP; CPU 3.00GHz 2GB RAM).
This time-consuming calculation process repeats every time the file is
re-opened. To avoid this function being evaluated upon opening the file, I
tried to keep the active cell value by inserting codes inside the function
to
bypass the time-consuming SQL portion, but the active cell value is fact
empty and does not contain the visible value last returned by the
function!

I therefore request for expertise advice in the forum. Anyone out there
wishing to help me to resolve this issue would be much appreciated.

Regards,
Steve C.





  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Need Help to Control the UDF from re-calculation

Hi Steve,

Looks like the time is being used making the connection and executing the
query to get the recordset.

I would suggest that you get the complete recordset (without the filters,
using GROUP BY) once (or once every hour or so if the information in the DB
may change).

Do this by getting the recordset only if it is Nothing, and do not set the
recordset to nothing at the end -

if rs is nothing then
'
' get recordset
'
Set rs = New ADODB.Recordset

STRSQL = "SELECT ... FROM ... GROUP BY ..."
rs.Open STRSQL, G_Connect, adOpenStatic, adLockBatchOptimistic, adCmdText

end if

and then use RS.FIND to get the particular record you want using the Where
Criteria

You may also want to use a disconnected recordset
(RS.CursorLocation=adUseClient before getting the recordset and Set
rs.ActiveConnection = Nothing after getting it)

regards
Charles
_________________________
The Excel Calculation Site
http://www.decisionmodels.com


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Need Help to Control the UDF from re-calculation

Hi Charles,
many thanks for your suggestion. Have a nice day!!


"Charles Williams" wrote:

Hi Steve,

Looks like the time is being used making the connection and executing the
query to get the recordset.

I would suggest that you get the complete recordset (without the filters,
using GROUP BY) once (or once every hour or so if the information in the DB
may change).

Do this by getting the recordset only if it is Nothing, and do not set the
recordset to nothing at the end -

if rs is nothing then
'
' get recordset
'
Set rs = New ADODB.Recordset

STRSQL = "SELECT ... FROM ... GROUP BY ..."
rs.Open STRSQL, G_Connect, adOpenStatic, adLockBatchOptimistic, adCmdText

end if

and then use RS.FIND to get the particular record you want using the Where
Criteria

You may also want to use a disconnected recordset
(RS.CursorLocation=adUseClient before getting the recordset and Set
rs.ActiveConnection = Nothing after getting it)

regards
Charles
_________________________
The Excel Calculation Site
http://www.decisionmodels.com



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
2007 Form Control/ActiveX Control font difference Nikko963 Excel Discussion (Misc queries) 0 April 15th 09 04:21 PM
How to control calculation of specific cells bda75 Excel Worksheet Functions 1 January 10th 07 02:55 PM
Selecting control on userform with part of control name (set question) Keith Excel Programming 4 January 10th 07 02:24 PM
Need to have control of the calculation to specific ranges Maria J-son[_2_] Excel Programming 9 March 2nd 06 03:50 PM
Calendar Control: Can't exit design mode because control can't be created Rone Excel Programming 0 May 24th 04 04:01 PM


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