I have created some user defined functions and have associated them to a custom category. To simplify things, I wanted to add these functions and the custom category macro to an Addin I already have installed for all my employees. How do I get the the custom category macro to excecute? It should run as soon as excel is opened...but I am not sure what event should be used and where is it installed?
I want to be able to create a range of VBA userforms to quickly perform long tedious tasks. I want these userforms to be accessed from a nice tidy toolbar.
I have done this and it looks nice and works well. What I would like to be able to do is have my custom toolbar of userform controlled functions be transferable so that if someone else wants my toolbar and attached functions they can install it easily much the same way you can do with an add in.
Is this sort of thing possible or does it require them to manually install all my userforms, modules and toolbar? If it is possible what sort of things should I be looking at?
I have a pretty developed add-in I've created for use at work. It has 3 full custom ribbon tabs worth of buttons and boxes and other features that run all of the macros in the project. Everyone loves it. The only problem is, its only used when we work with customer statement excel files. When using Excel for other tasks it is annoying to have 3 extra, essentially useless tabs taking up space on the ribbon.
Is it possible to create a button and stick it on, say the Data tab, that will "Start" the add-in and make the 3 custom tabs visible? Ideally there would also be a button to "Close" the add-in or hide the extra tabs until they're needed as well, but how to customize for my specific needs.
I am writing some custom functions to be saved in an Add-In file, but am having trouble saving named ranges. I would like named ranges in the Add-In file to be available in other spreadsheets. Is there a way to do this? Or is there a way to take a range from Excel and save it into a globally available named range using VBA?
I am trying to create a custom function to act much like the database capabilities of excel in summing a column based upon multiple criteria of other columns. First, before I get too far, does anyone have an already built custom VBA function that will accomplish this? I find that using the built-in database functionality in excel is VERY slow!
Anyways, I am trying to pass an argument that contains multiple ranges (much like you can do with the SUM() function):
The first set of arguments is the ranges that I need to look through. The second set of arguments is the values that I need to search within the first two ranges. The third argument is the column that I need to perform a SUM function on.
Instead of doing this, how can I create a function that will allow me to say, "Add another criteria range/value" and it will add another criteria to the list. I am currently passing a string, and that is not ideal, obviously.
Recently I found this forum through a Google search along with the perfect solution to a problem I was having finding and replacing text based on a table of replacement values. Here is the thread:
Multiple substitute or replace text using a table
I incorporated the SuperSub function that steveorg developed as a result of that thread into my worksheet by creating a new module and pasting the following code into it:
Function SuperSub(OriginalText As String, rngOldText As Range) Dim cel As Range Dim strOldText As String, strNewText As String ' loop through list of old_text used in substitute For Each cel In rngOldText.Cells strOldText = cel.Value strNewText = cel.Offset(0, 1).Value OriginalText = Application.WorksheetFunction.Substitute(OriginalText, strOldText, strNewText) Next cel SuperSub = OriginalText End Function
It works like a charm as a formula, but I also have a macro in the same workbook that, as soon as it selects the sheet with the formula, calls the SuperSub function and starts executing the code as a macro (even though there is no call to this routine in the macro). The macro ran just fine before incorporating the function into my worksheet.
The formula looks like this: =TRIM((supersub( UPPER(E2),rngSubst))) If cell E2 contains the string "101 North Main Street, Apartment 5", it would return "101 N MAIN ST APT 5"
Here is the macro:
Sub Import() ' Sheets("Shoebuy FTP").Select Range("A2:R200").ClearContents 'This is where it jumps to Function SuperSub(OriginalText As String, rngOldText As Range)
The function runs for every occurrence of the formula in the worksheet, and when it is finished, all of the cells containing that formula show a value of "#VALUE!". I should mention that it does not change the formula at all, but I then have to highlight each cell that contains the formula, press <F2> to edit, then <ENTER> to get it to display the correct results again.
It is probably some stupid little thing that I didn't do when I created the function, but I can't figure it out. I have written numerous macros, but this is the first time I have ever created a custom function.
I am trying to create a custom button in Excel that will sort on two different columns. One column has $ Sales and the other has Unit Sales. So you can click on the button and it will sort by $ Sales and if you click the same button again it would sort by the unit sales. I'd also like the text on the button to reflect what option the data would be currently sorted by. I am able to do one of these macros and assign it to the button, but can't figure out how to get both sort options assigned to the same button. I have had outside people send spreadsheets to me with this but can't figure out how they did it.
I have this excel file with some functions inside a Pivot Table, which use a year value as filter (the value comes from a report filter field) and data from a different spreadsheet to calculate a percentile value ... I created custom functions to replace the excel functions, passing the values as parameters.. The problem is now that when we refresh the connection (Refresh All button under DATA tab) the cells that contain the values returned by the custom function lose those values (go blank) In order to get the values I need to select the filter value again, while when I was using the normal PERCENTILE function the values would always refresh normally
Now... I think the problem might be related to the fact that the spreadsheet in question calls 5 different custom functions at the same time.... and, those 5 function call another at least two more helper functions... so, maybe this recurrence in calling the functions is causing the thing to break up
Is there a way I can prevent this from happening? Maybe put some flag or something that will cause the functions to be executed one by one, and not all at the same time?
I have a spread sheet that contains many user defined functions from a 3rd party provider that downloads financial data from an external database. Often not all of the data is required by the user, and as the UDF's take a long time to calcuate, i'd like to provide the ability to easily switch them on and off. Originally I had been looping through cells and either adding an apostrophe in front of the = or removing it. However running this loop is very slow.
I found this thread (Optimize VBA Loop For Inserting Formula) and adapted it to convert formula strings (with ' in front) to formulas in a single pass by setting:
myRange.formula = myRange.value. This works very well. I can't, however, work out how to go back the other way in a single pass. Have tried: myRange.formula = "'" & myRange.formula. This works for individual cells, but not for more than one at a time.
Assume I have a sheet consisting of 50 rows with 3 columns of figures. A fourth column contains a formula to calculate values, eg A1+B1+C1, on each line/row. I could enter A1+B1+C1 in the first cell and Copy, Paste to the other 49 cells. Alternatively, I replace A1+B1+C1 with a UDF.
Is there any difference in performance with using a UDF compared to using the long-hand/standard approach, or is it just a question of convenience? After all, both are doing the same operation with the same calculation.
I need to do a macro that will open a search window, the user would select a folder and it will search for a .csv file within it. Then after locating the file, it would automatically load it into a specific sheet in the workbook.
I'm trying to make a converter between about 8 various types of values. These are not units like Km or miles or something like that, but rather numbers that represent a specific "hardness value" on a variety of scales (to name a few: HRC, HRA, K)
What I've been doing so far is plotting the two types against eachother and then getting the best trendline I can so that I can use that formula to convert between the two with relative certainty. (for example, when plotting HV vs HRC my fourth order polynomial trendline with an Rsquared of 1 is y=0.0001x4 - 0.0188x3 + 1.0768x2 - 20.709x + 350.69)
My questions comes up where I was hoping to make a window or box of some sort allowing the user to input a numeric value, then selecting the Input units and the hopeful output calculated units, and have the box spit back to the user the conversion.
I am aware of the following topic in the VBA Help file:
"Using Microsoft Excel Worksheet Functions in Visual Basic You can use most Microsoft Excel worksheet functions in your Visual Basic statements. To see a list of the worksheet functions you can use, see List of Worksheet Functions Available to Visual Basic.
Note Some worksheet functions aren’t useful in Visual Basic. For example, the Concatenate function isn’t needed because in Visual Basic you can use the & operator to join multiple text values."
And I'm aware of how to call Excel funcitons from within VBA; e.g., answer = Application.WorksheetFunction.Min(myRange)
However, not only are some Excel functions not useful; the fact is they cannot be used because VBA has a native function that does exactly the same thing and you have to use that native VBA function to achieve your goal. It is these overlapping functions that I am especially interested in. I want to know what I should use directly in VBA and what I need to go to Excel for.
I have this piece of code that loads a list box and it has worked without 1 problem for the longest time.
Today, there have been 4 or 5 instances when it doesn't work, where I hit the load button and it does nothing.
I have closed down and restarted and it seems to work but this is very annoying
If txtBusinessName = "" Then MsgBox "Please enter search criteria" Exit Sub End If lbxRecords.Clear Application.ScreenUpdating = False shData.Activate.......................................
Filename = Application.GetOpenFilename("JPG Files(*.jpg),*.jpg,GIF files(*.gif),*.gif") If Filename = False Then Response = MsgBox("Er was geen file gekozen!", vbOKOnly & vbCritical, "Er is iets fout gegaan") Exit Sub End If
Userform.Image1.Picture = LoadPicture(Filename)
Userform.Show I can choose a picture and it will be vissible in the Userform.
The problem is it's not saved into the userform it self. How can i make it so that when i choose a picture it's also the picture i see the next time i open the userform.
how I can pass a value to this function. For example I know the record id that I want loaded, it is 42, so I want to create a button that brings up record id 42 when clicked. I think to do this I would load the form, then call cmbSelect() and pass it Me.TextBox1 = Value "42", but I am not sure on the syntax on how to do this
Private Sub cmbSelect_Click() Dim r As Integer Dim cell As Range, rngRecord As Range
' Locate indicated record For Each cell In MyData If CStr(cell) = Me.TextBox1 Then For Each rngRecord In cell.Range("B1:AS1") If rngRecord.Offset(-rngRecord.Row + 1, 0) <> "" Then Me.Controls(CStr(rngRecord.Offset(-rngRecord.Row + 1, 0))) =
I created the csv file from excel sheet. Now I have created a copy of that excel sheet in a new sheet, and I am trying to load that saved csv in the new sheet. But when I do that I see some cells formatting mismatch (can be seen in attached picture) though I clicked on preserve cell formatting at the time of import.
i had a file with 10,500 lines, 18,000 kb and it seemed slow to load (about a minute) every time i made changes and then saved it or reopened it.
so i broke the file up into 3 smaller files by cutting and pasting. i deleted all empty lines and columns beyond the file content. i defragged my compter. i cleared all excess format in job history - but -
one file now has 3,900 lines, 22,300 kb and takes 4 minutes to load.
one file now has 2,000 lines, 20,100 kb and takes 4 minutes to load.
one file now has 4,900 lines, 14,500 kb and takes 1 minute to load.
I'm trying to load the following XML file in Excel 2007 (from Excel 2007 VBA Programmmer's Reference) and get the error "Strict Parse Error" when I do so.
I have a checkbox with a userform. I can get it so that if I enable it and add data then it correctly shows as "Yes" or "No" within excel. However if I open the data using offset the checkbox is greyed out with neither Yes or No. Is there a way to make the checkbox allow and show a value of Yes/No?
I have a main form (Form1). From this main form another is loaded (form2) and then if necessary another form is loaded (form3). On form3 I have the following
I want in Cell A1 type by sample: GU23 and then presenter or press a button, and in cell E1 display the jpg image with a specific Size, mmm 40x40 is possible?
I have a Macro that copys all the cells with a 9 digit number in a range and lists them into col CC
However the way it is written Each macro is stored into its own worksheet. the problem is that i need to do this for all 43 tabs in the workbook which means a lot of copy and past when I build a new workbook.
So is there a way to load 43 diffrent macros into the 43 sheets in vba?
Or is there a way i can make the macros Global? so that they can all be stored in the same place but still work?
The below macro is saved under the workseet "PEBBLES" in vba
Code:
Code:
Sub Pebbles() Dim objReg As Object, objMatch As Object, objColl As Object Dim rngWhole As Excel.Range Dim rngCell As Excel.Range Dim lngRow As Long: lngRow = 1 Set objReg = CreateObject("vbscript.regexp")
I have an userform, with a label and several commandbuttons(for instance, command button A, B, C, ...) . Now if I click the command button A I would like to load in the label A text previously written in sheet1 range A1, if I click the command button B I would like to load in the label another text previously written in sheet1 range b1 (the old text shouuld obviously disappear)
We've developed some Excel spreadsheets which load in XML data from the web and then parses through it.
Dim oDoc As MSXML.DOMDocument Dim fSuccess As Boolean Dim oRoot As MSXML.IXMLDOMNode Dim oTimeProperty As MSXML.IXMLDOMNode Dim oAttributes As MSXML.IXMLDOMNamedNodeMap Dim oChildren As MSXML.IXMLDOMNodeList Dim oChild As MSXML.IXMLDOMNode Dim oOpChildren As MSXML.IXMLDOMNodeList Dim oOpChild As MSXML.IXMLDOMNode
To do this we add "Microsoft XML, version 2.0" in the " References" menu (which is from C:WindowsSystem32msxml.dll). This works fine on Windows XP and 2000 but Windows Vista doesn't have msxml.dll so it doesn't work. I've searched the web and found a page recommended using msxml6.dll as a direct alternative but unfortunatly the VBA script fails when implementing the MSXML object.