Restrict Macro To Run N Times During Specified Period
Apr 17, 2013
Is there a way to restrict a macro to run only a specified number of times during a user designated time period, for example run no more than 3 times during a 24 hour period?
We have a macro that runs to alert maintenance personnel if a certain temperature condition is met in machinery. This condition may happen numerous times during a day but we only need to alert the mechanics once a day if the condition is true.
I am trying to restrict a cell to only be able to input the letter "i" multiple times, almost like a tally sheet, in other words I want the cell to be restriced to one letter, but allow that letter to be entered multiple times.
In my workbook I have about 20 sheets (less in the attached sample), and on most sheets I’d like to query data for each day and find an average value based on the time and then copy that result into another sheet. I’m not sure if I’ll need 2 macro’s for this or if one can be used.
Here’s a quick description:
Assuming that I am currently in the sheet I want to run the macro, then I will either input “1:45” or “0:45” into a popup box, or I could always simply input the 1:45 or 0:45 in the code itself. I’m flexible
1:45:
If I input 1:45, then I’d like the macro to find the first 1:45 in Column B and the value in the same row in Column F will be used in the calculation. Once 1:45 is located, then the macro moves up to find 22:45 in Column B and the value in the same row in Column F will be used in the calculation.....
I've created Keyboard Shortcuts to run Macros in "Workbook A". Problem is, if I have "Workbook B" open in the same Excel instance/process as "Workbook A" the Keyboard Shortcuts will run the Macros in "Workbook A".
Is there a way to restrict the Keyboard Shortcuts to only run the Macro if Workbook A is active?
Or is there a way to code the Macro to run its procedures only if Workbook A is active?
I have a ctrl-q key activated macro (module 2) that successfully clears specific data entry cells in forms on two identically formatted sheets. How do I prevent access to that macro on the remaining three sheets of five in the workbook?
I have a range B1 to B4 for user to input value. Worksheet Change Event
However, the range B1 to B4 should not accept any value if the cell on the left hand side is empty.
Eg, If A1 is empty, B1 should not accept any value. If A2 is empty, B2 should not accept any value. If A3 is empty, B3 should not accept any value.
Below code checks for condition in A1 only.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B4")) Is Nothing Then
If IsEmpty(Range("A1")) Then MsgBox "Please input something under column A." With Application .EnableEvents = False .Undo .EnableEvents = True End With Target.Offset(0, -1).Select Exit Sub End If
End If
End Sub
Eg, If I enter something in A1, B2 would accept a value which is not what I hope to achieve. It should be checking for cell in A2 whther it is empty.
Would be grateful for some advice on how to modify the code.
In the attached sample file, when A2=Fruit, A9=Domestic, A10=Orange and A11=1, B2 would not accept a value greater than 200 and there is a pop up message.
This control check works fine if a user has input "Fruit" in A2 first and input amount in B2 later.
However, if the user has input value 250 in B2 first and input "Fruit" in A2 later, 250 would be accepted by B2 and there is no pop up message.
I want to assign a macro to a button that will unhide a tab for about 10 seconds, then rehide it and navigate to another tab. How do you do timed commands?
I'm opening a workbook and then running the macro in the workbook. The problem is I would like to build a "timeout" feature if the macro is running too long (as some of the macro's this will run can take days to complete) but I don't know how to run the macro asynchronously. Also I need to know if i can get it to run asynchronous is there an event that will tell me when the process is finished. The calling application of the macro is written in VB6 and opening excel workbooks to run the macros out of. also the "timeout" feature must be done from the VB6 application it cannot be edited into the the workbooks containing the macro.
I have written two VBA programs around the same time. Both run on open and pull external data and create graphs. My problem is that I want the end user to be able to run the report multiple times by choosing the name of the macro from the Excel macro menu (i.e. Tools>Macro>Macros) but only one of the workbook macros shows up on the menu. why the other macro is not visible on this menu???
I have created a macro that copies the outcome of a specific calculation (that is driven by random numbers) and pastes it (as values) into a seperate table. It then recalculates the sheet, copies the new outcome and pastes it into the same table at a row beneath the previous one.
However, I would like to be able to determine how many times this loop is repeated (i.e. how many rows of outcomes will be generated) without having to change the macro each time. Is this possible? Maybe by just linking it to a cell where the number of outcomes/repeats is specified.
Id like to run a Sub Macro a certain number of times, dependant on the amount of data provided. It could be that I need to run it say 290 times today, but 500 tomorrow.
Is there a bit of code to say, run the macro '500' times?
At the moment, if I set it to run more than it would need to it debugs and gives a compile error, procedure to large.g
I am looking for code that will start a macro by counting in seconds prior to an event according to it's due time.
Cell Value A4, A12 A20,( more could be added, depending on how many workers are present at the office at the time)
So if worker A is due to start a task at 1.00 pm, then 45 seconds prior to that event the worker can be notified. ( Cell Values A4 and D4 )
Then there are multiple tasks to be performed and each task is reminded in seconds after or before the set times the events ( Act) is due to start. The code would keep checking every 1 minute for a new list of events between the hours of 9-5 (Variable)
I've seen a lot of traffic around running macro's on a clock at regular intervals. But what if I want to run a Macro (Macro1) at 8:55, 9:55, 11:55, 12:55, 13:55, 16:55 and another Macro (Macro2) at the top of each of those hours? The string of times is not consecutive, so I have built a table to define the release times. At each of these times I need to run a macros, and I'm not sure where to begin.
At the moment I have a macro that is assigned to a button. When clicked, it creates a newline, create and copy a column in another sheet. This code works fine :
[Code] ......
What I now want to do is make a cell called "Total Number of Sites" and allow user to input data into "D3" manualy. eg if 3 sites, user input 3 in D3 so D3 = 3.
Since total number of sites = 3, Instead of clicking that button I made 3 times, I want to call the macro 3 times using a nother button.
I'm trying to repeat a macro a set number of times depending on the number a person inputs into cell B3.
Here it is currently: Columns("C:D").Select Range("C4").Activate Selection.Copy Columns("E:E").Select Range("E4").Activate Selection.Insert Shift:=xlToRight Range("C3:D3").Select
I am trying to subtract from a collumn 14 seconds from the time that is in the cell. I do not want to manually enter in a formula, or copy and forula into the cell as there is a large amount of data for this. The report will be updated daily and will need to always subtract 14 seconds from the time, and the result should be populated in the cells that the time is subtracting from.
I have search and searched the forums, and maybe am not entering the right info to get an answer, BUT I'm trying to do the following and have no idea where to begin... Workbook2: go to Workbook1, lookup c4:n43 and enter the cell value1 (if any) into I4, Workbook2
THEN
In the row the value1 was found, go to column A, retrieve it's value and return it to D4, Workbook2
THEN
Look at row 1 Workbook1, if the column that value1 was found = Jun-Aug then return 01/2008 to B4, Workbook2.
Of course I need this to go down line by line in Workbook2 to fill in all the info.
I have a problem with multiple charts in one sheet. The problem is really weird because when i add the charts to the sheet where all the values are then there is no problem, but when i set the position of the charts to another sheet and specific position it gives me an error
Here is my sub for making the chart:
Sub chartFormat(FChart As Chart, Hø As Integer, Bre As Integer) With FChart .ChartType = xlLine With .Parent .Height = Hø .Width = Bre End With With .SeriesCollection(1) ' THIS IS WHERE THE ERROR OCCURS .Border.ColorIndex = 10 .Border.Weight = xlThick End With With .Axes(xlCategory) With .TickLabels .Alignment = xlCenter .ReadingOrder = xlContext .Orientation = xlUpward End With End With
are the sheets where I wanna place the chart and where I get the data.
Now if I change profVis to sag all places then it works fine and it places all the charts and make them perfect. But when profVis is there, it makes and error 1004 :
Method 'SeriesCollection' of object '_Chart' failed.
But the error first occurs after the first 2 chart have been made. I've tried switching them, so the last chart becomes the second, and it can make it. It seems as if there is a limit of 2 chart?
I'm looking for a formula that will calculate the difference in times between specific times while working with a 24 hr clock. Please see details below:
E3 provides the start time of 4:00 H3 provides an end time of 15:30
If an employee works betwen the hours of 0:00 (midnight) to 5:59, this is considered DIFF hours and is therefore the number I am seaking. So for the data noted above, the total DIFF hours worked is 2 hours.
When I run macros usually they're fast, but occasionally will run very slow. An example macro I have is pasted below. It's just a simple macro that pastes months. If I am pasting on top of a cell that contains a month it pastes the rest of the months that follow.
Most of the time this macro runs very fast, but occasionally it takes about 1-2 seconds to run, and it is a very simple macro! It is not macro specific, as all my macros will be slow. I''m using Windows 7 with Excel 2010. I'm only using 23% of my CPU and 4.5GB of my 16GB of RAM, so I don't think it's a hardware thing.
Is there some kind of condition that occurs that will make excel run macros slower?
I have never built or used a macro before and need very clear step by step instructions. I am just assuming that a macro is the answer to what I am looking for but if there is a simplier solution that would be fantastic.
I need to be able to repeat a row of data a specified amount of times.
Example:
3 Yellow James 2 Green Mark 5 Purple Sue 1 Orange David
Needs to look like:
3 Yellow James 3 Yellow James 3 Yellow James 2 Green Mark 2 Green Mark 5 Purple Sue 5 Purple Sue 5 Purple Sue 5 Purple Sue 5 Purple Sue 1 Orange David
I have a list of times in a column. I'm looking for a macro that will go down the column and record all the times that lay between 5 and 7am, 1 and 3pm (13:00-15:00) and 8 and 10pm (20:00-22:00)
Just curios if this is the most efficient way to copy a workbook x number of times. I tried copying 77 workbooks and not sure exactly how long it took, but about 2 mintues. The original workbook is 300 KB.
I have a button that a user clicks to print the info they entered. I need some code to add a running count to a cell (say, H2) every time the user clicks that button and runs the print macro.
I've taken data from a fixed-length text file and the records are identified using the first two characters on each line of the text file. I've managed to identify these in each row with other bits of code so that was fine.
Now, I have 56 string variables (identifying my record types), which I'm assigning into an array. Then, I want to go through each variable in the array, performing the same action by way of a For Next Loop where, by taking this particular RecIDNo (see my code) string variable I will get the code to copy/paste the data into the relevant worksheet (where later on I will apply a text to columns using another array). But first, this set must work before I can do that! To avoid confusion, note that the record types i.e. 01 through to 56, will be filtered, then copied into the corresponding worksheet with the same number.
The problem I'm getting is the autofilter I'm applying, then the array I'm trying to reference (to avoid repetitive coding!) doesn't work as the code doesn't compile (I've not worked a lot with Arrays but I'm learning all the time!)
Option Base 1 Sub test() 'The array is declared here: Dim RecIDNo(56) As String 'The arrays are assigned the string variables below: RecIDNo(1) = "01" .... RecIDNo(56) = "56" 'This worksheet contains my data: Sheets("DATA").Select
For RecIDNo(1 To 56) '<--I THINK THIS IS WHERE I'M GOING WRONG!! 'Filter and select arrays:................