Call Subroutines With Names Based On Generic And Relative Part
Feb 25, 2014
My problem today, is actually being able to call the routines. I have tried to make a generic setup, so that each subroutine to be called is named "Macro_[number here]". So Macro_1, Macro_2 etc. By doing this I am hoping to be able to call all the subroutines using a For Each code.
I have a very vast code with several subroutines based on selections from a userform.
I believe I have identified a loop that might be slowing down the process in the below:
Code: Dim n As LongFor n = 23 To 65 If ThisWorkbook.Worksheets("record").Cells(ComboBox2.ListIndex + 3, n).Value = "INT" Then UserForm2.ListBox2.AddItem ThisWorkbook.Worksheets("record").Cells(2, n).Value End If If ThisWorkbook.Worksheets("record").Cells(ComboBox2.ListIndex + 3, n).Value = "EXT" Then
Basically the code will go through each value (that can be only of those four instances) and put the title inside a different listbox.
This works, but it seems to be maybe too "step by step" and direct? Is there a way for it to skip after it found the corresponding value to the next N without checking for a match with the other items?
I have a workbook with a single worksheet. The worksheet includes some named ranges, which are used in a dynamic chart (so that when I add data, the chart updates).
I want to duplicate worksheet#1 so that I can have worksheets 2, 3, 4 etc.
Thus I can paste new data in the new worksheets, and have all my calculations done.
Naturally, the only probelm is the graph. It is using the named ranges from worksheet #1.
Is there a solution, so that I don't have to re-create my graphs on each worksheet? (each worksheet has varying numbers of rows, AND, I will be updating each worksheet with new data from time to time, thus the need for a dynamic chart)
eg say you call (ie insert a range name) cell A1 "firstcell", B1 "secondcell", then A2 "divisor1" and B2 "divisor2". if you put a formula in A3 which is "=A1/A2", how do you copy and paste this formula into B3 but getting the formula to reference B1/B2 rather than firstcell/divisor1, as it does by default?
so this gives a part number depending on what number is placed in O6. What I need to do know is look at 2 different cells and for each combination of numbers give a different part number. so if A1 is 2 and B1 is 3 give a certain result.
I have written a number of macros, and I typically use Application.Screenupdating = False at the start, and set it True at the end of each macro. However, I now have some big macros which call others as subroutines. This results in the screen updating for each pass thru a called macro, as the Application.Screenupdating = True statement is executed. Is there a means to repress this at the top level, or is there a better approach to take in writing code which will stop screen update for a macro, but not restart it each time the macro is called as a subroutine?
I want to call a macro with a varying name that is within a module with the same name.
I have a module called Test1 and within this, a macro name called test1 I have a module called Test2 and within this, a macro name called test2 etc
On another module called Test8 (with the macro called Test8), this Test8 macro will call either Test1 or Test2 or Test3 etc depending on what I choose in an excel spreadsheet. So on sheet1, cell A1, there is a drop down with the options Test1 or Test2 or Test3 etc.
The following works to run the macro test1 from module test1 (when it does not vary i.e. i physically put in the name of the macro myself):
Sub Test3() Test1.Test1 End Sub
The following works to run the macro test2 from module test2 (when it does not vary i.e. i physically put in the name of the macro myself):
Sub Test3() Test2.Test2 End Sub etc
However, if I try it so that the calling of the macro varies as below , it does not work:
Sub Test3() MacroToCall = Sheets("Sheet1").Range("A1").Value MacroToCall.MacroToCall End Sub
Im trying to get a message box to pop up if the result of a count formula is greater than one; ie. in a list of data to warn of repeats of a certain key reference.
Ive never had a drama with putting a message box in before but ive only based it off a constant reference whereas in this case, it will be based on a relative reference; for example, when inputted a value in A2, that has the same value in A1, the count formula in B2 will be 2, so i want a message box to come up. Same goes if the same value was put in A3, and B3 was greater than
and the trouble I am having is that in the second Countif, I need it to check the cell in the "D" column relative to what cell is being checked in the "B" column. Right now it is checking every cell in "B" against "D7" instead of "D8, D9, D10", according to what cell in "B" is selected.
I created a VBA module (Excel 2003) that contains many generic functions that I wrote. I want to use the functions from that modules in other Excel VBA projects (something like "Include" a library of functions).
I have an Excel worksheet used as an index for my holiday photo collection. The worksheet consists of a list of geographic locations visited for a particular holiday, and a hyperlink in each of those cells to the location of the corresponding photo on my hard drive ( eg C:NZ PhotosOtago\796.jpg). When I have taken some 10,000 photos on a trip, I find this an easy way to quickly view pictures of any site visited on the holiday.
The Excel index and the photos are stored in different partitions on my computer.
I now wish to share these photos by burning them to a DVD, but I would like the Excel photo index to be also on this disk, but with hyperlinks that refer to the photo files on the DVD, not the originals on my hard drive.
If this is possible, and the format of the hyperlink that I should use in future? e.g., instead of making the hyperlink E:NZ PhotosOtago\796.jpg, could I make it ..NZ PhotosOtago\796.jpg, so that I can transfer the Excel spreadsheet to a DVD with the photos?
Also, is there a way to do a global change of the hyperlinks in all the worksheet cells?
I'm trying to write a formatting macro that will insert a gray divider (row) into a blank line. I'm going to do this with a keyboard command, but I'm having a hard time selecting to column AJ. Obviously this command...
...takes you to the end of the page, but I don't need to go that far, just to column AJ.
I need a macro that can run a serial# 1 t0 10 (or more or less) with A1 being starting point. Here is my illustration data.
Coloumn:A Coloumn:B 1 IrfanAneeza 2 Scooby Dooby Do 3 Dooby Dooby Do 4 Yaba Daba Doo
However, there is a little kicker in it. The range of coloum:B varies all the time i.e. B:B could be 1 to 10, it could be 1 to 3 etc. Thus, macro should list serial#'s based on the coloumn B:B range of data.
I have 8 columns of data, the first 4 and the last four columns have the values which correspond to each other.. Here is an example:
VALUES(A to D)NAMES(A to D) ABCDABCD 1.3451641.3383581.286221.359808321325370391
So value 1.345164 corresponds to 321 and 1.28622 to 370. I need a function that will return a value from one of the VALUES columns which corresponds to the second smallest cell value from the NAMES columns. For example – here the second smallest number in NAMES column is 325 so the function would return the corresponding value of 1.338358.
background The "RefersTo" property of a name is a formula that can be absolute or relative. It depends on the use of these famous "$" in their definition.
When no "$" is used, the name is relative. In this case, at a given time, the "RefersTo" property depends on the position of the active cell.
This mean that if you look at this property in VBA, like in this statement:
ex = myName.RefersTo
the value that will be returned will depend on the position of the active cell. If the active cell moves down, the RefersTo property is shifted like it would be when a formula is copied down in a spreadsheet.
In a VBA piece of code I am writing now, the behaviour described above is perturbing me. I don't want to move the active cell on my sheet.
However, I would like to know what the RefersTo property would be if the active cell would be at a certain place.
I have a work book with 3 sheets. Sheet 1 is the main sheet and sheets 2 and 3 will use (I hope vlookup) to update 3 columns from info in sheet 1. my attempt at a vlookup call in sheet 2 is: =VLOOKUP($b3,[master_AoJ_2.xls]Sheet1!$B$3;$B$65,false)
my understanding is that: - $b3 is the cell in sheet 2 that will be updated as a result of the vlookup call. - [master_AoJ_2.xls]Sheet1!$B$3;$B$65 refers to range $B$3:$B$65 on sheet1 of master_AoJ_2. it does not work... infact I get nothing at all. when I type the call into cell $b3 of sheet2 excel thinks it is stariaght text. this is how I coded the function call =VLOOKUP($b3,[master_AoJ_2.xls]Sheet1!$B$3;$B$65,false)
As you can see below, I've written code that writes random numbers into three columns of a spreadsheet (10 numbers in each column).
What I want to do is create code that will run the random number generator for a period of 1 minute and then stop. I know that I will need to write a timer subroutine to do this but I'm how unsure how to do this.
My sales spreadsheets have a column which is turned to 100% when the order comes in (i.e. when the salesman gets it in his commission). I have applied conditional formatting to turn the whole row green when this happens (for ease of seeing which orders are in)
We also have a cell for the Purchase Order "number" (as these come from the customer, these can be a straight number sequence - "12345" or a mix of letters and numbers - "ABC12345"). My boss would like this cell to be red if the "order in" column is at 100%, but there is no PO number.
However, when I put in the formatting: (1) =$K$15=1 (to turn the row green) (2) Cell Value is equal to 0 (to turn the cell red)
it will apply (1) no problem, but will only apply (2) if (1) is false. (i.e. if (1) is true, the whole row goes green, with no red in the PO box.)
If I switch them round (i.e. have (2) first), then I get the formatting that I want (i.e. green row with a red box), but if (1) is false, I still get a red PO box.
What I need is a way of only applying (2) if (1) is true. (or any other way of only making the PO box red if the order is 100% but there is no PO number)
I have 4 columns (Date (A), Open (B), High (C), Low (D)) in date order with the newest at the top. I have a value in G1, I'd like to see the oldest date returned in H1 of when a value in the (D) column is lower then G1. I've been looking at match and vlookup but what I can't seem to figure out is how to return the oldest date.
I have a checkbox and a command button on my sheet. I want that, depending if the checkbox is marked or not, I can call two different macros. I don't know if this is possible at all or maybe can be done easier otheriwise, but this would more or less be my idea of what should happen:
Private Sub CommandButton1_Click () ' If CheckBox1 = marked Call MacroA
'Else (CheckBox1 = unmarked) Call MacroB ' End If End Sub