Macro Code Executes Very Slowly: Filling Some Cells On Different Worksheets
Nov 9, 2006
I have the following code attached to a userform. It works perfectly (for what I need) although I know it may not be perfectly written. However it does seem to take for ever to execute considering it's just filling some cells on different worksheets. Have I missed something out or got it tied up doing something that takes a long time. If it's just a fact of life that it takes this time then I can live with it.
Private Sub UserForm_Activate()
Dim wsCB As Worksheet, wsLL As Worksheet, wsBond As Worksheet
Dim rngFound As Range
Set wsCB = Sheets("Current Bonds")
Set wsLL = Sheets("Landlords")
Set wsBond = Sheets("Bond")
TenancyStartTxt = Format(TenancyStartTxt, "dd-mmm-yy")
RnwlDteTx = Format(RnwlDteTx, "dd-mmm-yy")
Application. ScreenUpdating = False
10 MyBond = Application.InputBox("Bond number for renewal?", "Bond Number")
strFindMe = MyBond
With wsCB
Set rngData = .Range("c13:c490").......................
So I have a macro which is running slowly, though I can't figure out why. I don't remember adding/subtracting from it. All code prior to this macro being called runs fine...So this part below runs fine:
Private Sub Step_3_Click()
Dim YR As String YR = Range("C24")
Dim DT As String DT = Range("C27")
Dim MNTH As String MNTH = Range("D23")
For Each wb In Workbooks If wb.Name = "Top100gen2start.xls" Then MsgBox "You need to close the Top100gen2start.xls file before proceeding.", , "Close Top100gen2start.xls file" Exit Sub End If Next
If CheckBox1.Object = False And CheckBox2.Object = False And CheckBox3.Object = False And CheckBox4.Object = False And CheckBox5.Object = False Then MsgBox "You didn't select a sector report to run!", , "Select a sector report" Exit Sub End If
If CheckBox1.Object = True Then Call FullBlown If gameover = 1 Then Exit Sub End If End If
Once I call that Fullblown macro (or any of macro similar to it in this process), the whole things slows WAY down (I mean as soon as it is called)...Not sure what I'm doing wrong, but here's the called macro:
Public Top100Check As Integer, gameover As Integer
Sub FullBlown()
Application.ScreenUpdating = False
' Dim x As Date
' x = Format(Date, "mm-dd-yy")
On Error GoTo Jump ' Workbooks("PERSONAL.XLS").Close Jump:
Within the code I am asking excel to sort two difference worksheets with virtually the same code, except that one of the worksheets does not get sorted. If I step through the code, it works and the worksheet is sorted, but if I just run the macro the worksheet does not get sorted, as if the line of code in question is being skipped. Pointedly, my question is - Why does the code work while debugging (stepping through) but not when I generally run it?
Also, as far as the code is concerned, I am sure that the all variables contain the information I need them to and am also sure that any ranges created from those variables are also the ranges they should be. Here are the two lines of code that are supposed to sort. The UBOC cash sheet gets sorted, but the LNB cash sheet does not.
I have an excel based report consisting of several worksheets. Each worksheet contains VBA code which allows the user to generate custom reports with a series of Excel Charts being generated. I have two related problems with the output/display. Whenever I save the file the code is triggered causing each sheet to update and scrambling charts. (To fix this I have to leave the report and then re-enter, which then works fine).
Is there anything I can do to stop this from happening? For example, to avoid the code being run on save or to refresh the active screen. A couple of things I should mention: I already have screenupdating turned off so the user is not seeing each action being calculated. At present to avoid the chart display glitches with complex tasks, I have added a line to my code at the end which moves off screen and then returns to the current screen. That ensures the chart no longer lingers on screen, however it does mean that for a split second a phantom graph appears in the middle of the screen before disapearing.
I was playing aroung some VBA code, but the code executes 98 times and I don't know why. For example, range A1 contains 5. When I type, say 3, in A1, I want A1 to show me 8 (5+3). Then I may type 10, in this case A1 must show 18 (8+10). And so on. I decided to place entered values in different column, then sum them in A1 with below stated code
I have created code to enter data from the Active cell. However, I would like to edit it so that the user can only make this work if they are on Rows 6 through Row 29.
Here is the Sub DropDown7_Change() 'Right here I want: If ActiveCell. is in Row 6-29 Then Application.ActiveCell.Value = Range("D3").Value Application.ActiveCell.Offset(, 1).Value = Range("F3").Value Else Msg = "Move into the proper rows" End Sub How can I do a check before the code is executed to be sure the users active cell is in Rows 6-29.
it would be possible to have text disappear after being displayed in Excel for a while.
My son and I played around with games (helping create a photographic memory, I told the youngster!) on the thing and until yesterday neither of us noticed that clicking the mouse anywhere (actually just clicking it) causes the screen to "freeze" while the code still happily erases the text in the background.
Hitting ESC allows the screen to cath up to the actual code EVEN THOUGH the ESC key is actually disabled from breaking the code.
I have the code below that puts in the file name, date and time and page numbers. That works fine, however, I changed the name of this macro to AutoOpen thinking that this would execute upon opening an Excel doc -- I think this works for Word, that's why I tried it. Anyway, it doesn't execute upon opening an Excel doc. Can anyone tell me how to get that going? Also, the font of the file name comes at at 12 point while the other entries come in at 6 pt - any way of making these all consistent, say 8 pt? Thanks for your help.
By the way, I'm a novice at Excel macros so being fundamental in your answer would be very helpful (i.e., don't know why there is a distinction between Regular Modules, Worksheet Modules and Workbook Modules. Seems to me I should always be creating Regular Module macaros so that they are accessible to all Excel docs but, again, I'm new at this so I'll have to read more about these items as well).
I have an excel workbook created in 2007, but now running in 2010. In the workbook I have a form Combo box with a macro assigned to it. When I click any value in the combo dropdown list the macro executes. In 2007 I could click the combo dropdown box and then press ESC to exit from the form control without executing the assigned macro. Similarly I could also click on any other cell to exit from the control without executing the macro.
But, in 2010 if I press ESC or click on any other cell the macro will execute. Sometimes I want to be able to exit from the combo box without executing the macro.
Dim strLoan As String Dim longCat As Long Dim rHere As Range Range("A1").Select [Code] .....
I can see the cursor move to all the desired cells when this macro executes; it just isn't dropping any data where it should be. I have been working at this stage for the last five hours with no success. I don't know whether my copy-paste methodology is broken or if it is my selection criteria
I keep getting an automation error in excel 2010 when I click on the button that executes the macro. Excel crashes when the box appears. There is no code in the error box. Why I get this error message.
I have created a workbook with 31 worksheets (they represent each day of the month). I'd like to know how I can auto fill the date in cell A1 across the 31 worksheets without having to type in each day myself. I need the date format to look like this: Wednesday 7th May 2014
In other words, cell A1 in worksheet 1 needs to say Thursday 1st May 2014, cell A1 in worksheet 2 needs to say Friday 2nd May 2014, cell A1 in worksheet 3 needs to say Saturday 4th May 2014 and so on for the remainder of the worksheets for that month.
I have created a workbook with 31 worksheets (they represent each day of the month). I'd like to know how I can auto fill the date in cell A1 across the 31 worksheets without having to type in each day myself. I need the date format to look like this: Wednesday 7th May 2014
In other words, cell A1 in worksheet 1 needs to say Thursday 1st May 2014, cell A1 in worksheet 2 needs to say Friday 2nd May 2014, cell A1 in worksheet 3 needs to say Saturday 4th May 2014 and so on for the remainder of the worksheets for that month.
I have data on sheet "master", which with the macro (Ctrl+Q), splits in unique values in tabs and another macro sub Send_files() (Ctrl+e) triggers a selection in each split-sheet in email body to recipient.
Problem arises when I want to run a macro which collectively send files after running in each sheet. A simple code would be:
I have made a basic holiday planner, where each employee has one worksheet which shows 52 x 5 day weeks.
When an employee asks for holiday, I put a 1 in the corresponding day (cell). What I need to happen is that if 4 first aiders all ask for holiday on the the same date a warning User form loads up.
The names of the 4 worksheets are;
"Jason L 2014", "Sharon L 2014", "Alan B 2014" and "Chris M 2014".
The ranges for the 5 day weeks are
"B7:F7", "L7:P7", "V7:Z7"
"B10:F10", "L10:P10", "V10:Z10"
"B13:F13", "L13:P13", "V10:Z13"
"B16:F16", "L16:P16", "V16:Z16"
[Code] ........
The code should not run the User form until the sum of the same cells across the 4 worksheets = 4.
By this I mean if 3 of the first aiders book B7 off, the code searches the 4 worksheets and if the sum is 3 then nothing happens. However if the 4th and final first aider tries to book the same day off, when the code runs it totals 4 and the User form runs.
I have a workbook with multiple worksheets. On some of those worksheets a have merged cells, so in order to paste new data I need to unmerge them first. Below is the code that I wrote for it. However it doesn’t work and returns “Run-time error '1004': Application-defined or object-defined error”. I looked at this post List Maximum Value From Each Worksheet and tried adding With – End With, but it failed too. As far as I understood the problem is that the Worksheets/Sheets object does not support UnMerge property, but I may be wrong. If I add ws.Activate line (test2) everything works fine.
However I was wondering if there is a way to do it WITHOUT activating the worksheets.
Sub test1() Dim i As Integer, ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets Select Case ws.Name Case "5 - Top Network Facilities", _ "5b - Top Arb Facilities" For i = 0 To 9 ws.Range(Cells(2 + i * 5, 1), _ Cells(6 + i * 5, 1)).UnMerge Next i Case Else End Select Next ws End Sub
Is there VBA color to change ".Fill.ForeColor.SchemeColor =" into NO FILL? In other words, keeping the existing Foreground color prior to the macro being activated.
I am working with monsterous excel sheets (named Data) and need to a column that is governed by the ZIP. I have a sheet named Source in my excel folder with all the matching information next to the excel sheet. The column my zip codes in Data starts on J6 to J290 and the zip codes in Source are from A2 to A2671. The information I am trying to pull from Source to Data are names and branches located in Source from B2:E2671.
What function will auto fill the columns with the correct information. If it can only be done by putting a function into each column, that is not a problem
the following code filters data and copies to worksheets specified in code, can this code be shortened to make the macro run faster. Also in my second criteria how can I put "Contains "PT2" in the criteria as nothing happens when i run the macro, is *PT2?
With shtRec .AutoFilterMode = False .Range("A7").AutoFilter Field:=8, Criteria1:="LEHMAN", Operator:=xlAnd With .AutoFilter.Range On Error Resume Next Set rng = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(12) On Error GoTo 0 End With If rng Is Nothing Then MsgBox "No data to copy" Else rng.Copy shtLehman.Range("A6") End If .AutoFilterMode = False End With
I have a work book that contains 10sheets. considering one as main sheet remaning as sub sheets. I want to open main sheet from all other remaining sheets using a common button.when I tried normally is shows compile error: Ambiguous name detected. Any other way to solve it.
I have question on how to calculate the certain cells between 2 different worksheets based on the certain calculation parameters and the comparison result (the report) is put into the new worksheet on the same workbooks.
Expected result should be put in Worksheet3: DEPTH, G1, G2, calculation(G1 and G2), CI1, C2, calculation(C1 and C2), so on until the last columns. (find example on attached file "Test_Data.xls)
What I have done is to create a template to be filled in by copy and paste DEPTH, G1, G2 on worksheet1, DEPTH, C1, C2 on worksheet2, so on (attached file "Template_QC.xls"). Then I create a calculation macro for each of those worksheets separately to calculate the difference and color them . The calculation macro that I used is as follows:
I have been at this for days and i can't quite get it right.
I have multiple worksheets of clients all formatted the same.
I need a Macro/VBA that will take from Each sheet onto a master sheet the Name of the Client(Cell I1 from the sheet)
Under the name I need the text Authorization #: then the data(C3) Under that I need the text Dates of Service Expiration: then the data (D5) Then the text 90801 Balance: then the data from (C30) Then the text 90806 Balance: then the data from (F30) Then the text 90847 Balance: then the data from (I30) Then the text 90853 Balance: then the data from (L30)
Then a couple Spaces then the same exact data from the next sheet...till all the work sheets are done.....
I'm working on some data dealing with time fields, and I need to have them counted in 15 minute intervals.
For example, one of the entries listed in a column has an event starting at 02:25:00 and ending at 02:55:00 (30 minutes). Along the top row are times listed in 15-minute intervals, e.g. 13:00:00, 13:15:00, 13:30:00, etc. In the corresponding cells, if the entry took place within a particular interval, I need it to say "1", otherwise have it say "0" or "-" or something denoting no event.
An IF statement was used, but it didn't seem to work.
If that's a little hard to follow, check the example attachment for a better idea of what I'm trying to describe.
In the example spreadsheet, Row 2 (manually typed in) is what I'm looking for. Row 3 is the (failed) attempt to use the IF statement.
I am creating an excel file for my company. This file contains 18 headers (from Columns A to R), all of which are mandatory to be completed.
This file is used by several other colleagues with the intention to update our records almost on a daily basis, and saved by them daily before being checked by me.
I would like to know if there is a macro to be used in order to prevent them from saving the file if all the fields are not completed. (ie. A5 to R5)
This function should only run right up to the next blank row.
Eventually, I would like the users to complete all cells from A5 to R5.
Should a single cell not be completed, an error message will pop-up.
When the next person accesses the file to enter their data underneath, it will again, not allow them to save until all the mandatory fields are filled out.
I have looked at another very similar link but it does not work and I do not know how to tweak it.
The example given is for when the data is in Column A.
The headers on my file are on Row 1 (Column A to R).
Mandatory Cells and knowing to fill in the next row!
I have a spreadsheet that is designed to aid a production department to complete and track their orders. I need two things from this.
1) I have an order of 500 baskets. Baskets are stacked, but the heights vary from 16 to 20. I need the spreadsheet to be able to work this out for me. Example: 500 baskets 20 high = 25 stacks. 500 baskets 16 high = 31 stacks and 4 baskets.
Excel would work the last equation out as 31.25. How can I get excel to use the remainder (in this case 0.25) to work out the required number of baskets?
2) Using the above, I need the sheet to fill out a certain area with information. So, if the order is 500 baskets at 20 high, I need 25 of the cells in the specific area to display the number 20. Likewise, if the order is 500 baskets at 16 high, I need 31 cells to display 16 and the remaining cell to show 4.
Got two columns one with group name and other with value. given below is the data which i have
Retail group25635012030Technology group24520520245Wholesale group24334024450 the green cells are blank , i want them to fill up by the group name i.e first four rows belong to retail group, so i want retail group to be filled in the blank cells upto technology group from thereon technology group to be filled in till whole sale group.