Using A Variable In Macro
Jan 14, 2009I have an variable from sheet1. I use this as an input for sheet2 and do some calculations.
Based on the input in sheet1, I decide a starting cell and ending cell.
I have an variable from sheet1. I use this as an input for sheet2 and do some calculations.
Based on the input in sheet1, I decide a starting cell and ending cell.
I'm fairly new to macro's and VBA, by searching on the internet i've copied and pasted some code together into a macro.
But it ends in a Run-time error 91...
The macro opens a target .xls file in a selected folder, performs copy - paste actions from masterfile to targetfile.
Than it filters data in the targetfile sheet1 and copy's the results to the various other sheets; saves and closes the targetfile.
The next target file in the folder is opened and the actions are repeated in this second target file.
For the first target file this works smoothly; but for the second one (of a total of around 100) it does not copy the filter results to the other sheets in this workbook.
The error message i get is: "Run-time error 91:Object variable or with block variable not set."
When i hit debug it highlights the line "ActiveSheet.Next.Select" which, at least in the first file, seems ok.
When i try to run the code below i get the error message - object variable or with block variable not set-
Sub REFRESHXX()
'LIST
Cells(Sheets("POINTS").Range("DD801").Value, Sheets("POINTS").Range("DD800").Value).Select
Selection.AutoFilter Field:=1, Criteria1:="1"
'SET RANGE
Dim sFormula1 As String
Dim sFormula2 As String
Dim sCell1 As String
Dim sCell2 As String
Dim sSheet1 As String
Dim sSheet2 As String
Dim r As Range
Dim MyRange As Range 'for testing
With Sheets("Points")
sFormula1 = .Range("CY1").Formula
sFormula2 = .Range("CY2").Formula
End With
'FORMULA IN R1C1 STYLE
strFormula = "=IF(ISNA(VLOOKUP(RC[-1],MASTER!R4C3:R17908C7,3,FALSE)),0,VLOOKUP(RC[-1],MASTER!R4C3:R17908C7,3,FALSE))"
'ENTER FORMULA IN ALL CELL RANGES
r.FormulaR1C1 = strFormula
'REDUCE TO VALUES
Dim ar As Range 'an area is a range
For Each ar In r.Areas 'areas are discrete, contiguous ranges of cells
ar.Value = ar.Value
Next ar
'UNLIST
Cells(Sheets("POINTS").Range("DD801").Value, Sheets("POINTS").Range("DD800").Value).Select
Selection.AutoFilter Field:=1
End Sub
I found this nice little bit of code for a date range search in column A but it will not work. Apparently i have not set a variable or something.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim startDate As String
Dim stopDate As String
Dim startRow As Integer
Dim stopRow As Integer
startDate = InputBox("Enter the Start Date: (dd/mm/yyyy)")
If startDate = "" Then End
stopDate = InputBox("Enter the Stop Date: (dd/mm/yyyy)")
If stopDate = "" Then End
startDate = Format(startDate, "dd/mm/yyyy")
stopDate = Format(stopDate, "dd/mm/yyyy")
startRow = Worksheets("sheet1").Columns("A").Find(startDate, _
LookIn:=xlValues, lookat:=xlWhole).Row
stopRow = Worksheets("sheet1").Columns("A").Find(stopDate, _
LookIn:=xlValues, lookat:=xlWhole).Row
Worksheets("Sheet1").Range("A" & startRow & ":A" & stopRow).Select
End Sub
I attempted to modify "macro_1a1ay" to look into the "comments" sheet (column a) for a specific text string. If that text string is found, I have it delete the entire row, then re-sort the page and return to the calling page. It works well as long as it finds something. When it does not find the string (i.e. like now when the page is blank) it gives me the run-time error mentioned above.
View 7 Replies View RelatedI am trying to run different macros by clicking various different buttons on the sheet, I then want different data to load into the user form depending which button was pressed. So I have buttons named "SV_1" and another named "SV_2". when either button is pressed then it runs a common macro that gets the name of the calling item. then I want to add "Macro" to the beginning of the calling item name and then call that macro. here is the code that I am working with, when using a watch i can see the value of the variable is "MacroSV_1" when button 1 is pressed but I cannot get it to run the Sub.
VB:
Public ClkBtn As String
Public CallMacro As String
Sub ItemCall()
[Code] ......
I have declared one variable outside of Sub. And in a Sub I gave it a value. Then I run a macro, which should take that value and print it to the cell. However, it is printing a blank cell, not even "0" (I run a macro and anything in that cell is removed).
[Code].....
and then my macro:
[Code]......
How to make so macro see my variable declared outside of this macro?
I have a macro that calls a User Form using:
Code:
Update_Too.Show
The form has a drop down list menu and the user needs to select a month. I store que choosen value in a variable named "OPT", using this code:
Code:
OPT = Me.Months_List.Value
I declared this variable at the start of the macro like this:
Code:
Dim OPT As String
But it doesn't seem to be working. I am not declaring the variable in the user form,
I currently have the below macro:
If Cells(1, 3) = 2 Then
For a = 1 To 336
b = Round(a * 2 + 0.99)
Cells(b + 0, 3) = a
Cells(b + 1, 3) = a
Next a
MsgBox " Cell C1 is not equal to 2"
End If
where the intent is that whatever cell A1 is equal to, that is how many times over it will duplicate a number in consecutive cells before moving to the next number, ie:
1
1
2
2
3
3
etc to 336.
How can I tweak the code so that if I change the data in cell A1 to 9, I don't have to go in and change the macro?
I have 2 worksheets - "Results" and "Historical". I am trying to record a macro that copies data from "Results" and then pastes into Historical. The data I want to copy will always be in "Results" A1:A10. When I want to update the macro (which will be weekly), I want it to copy A1:A10 and then paste into "Historical". Simple enough. Here is the problem:
Since this will be updated weekly, the first time I update I will want "Results" data copied into "Historical" A1:A10. The next time I update, I want the data copied into "Historical" B1:B10; then C1:C10, etc. Essentially I want the keep a running total of all of my prior data.
So I need the macro to be able to say something like - paste date into the first available column. If there is data in A1:A10, then paste into B, then C, D. How do I make the Macro variable?
My code as below
Application.Goto Reference:="CURRENT"
Selection.Copy
C1 = Range(Cells(4, 8), Cells(4, 200)).Find("HC4").Value.Row + 1
C1.Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
I want to copy the range 'Current' , this part, the easy part works.
Next I want to look in the range of H4 to GR4 for the value that also appears in HC4
In my example this would be CW4 then I want to paste 'Current' to the cell 1 row below, ie CW5
When I'm recording a macro it records the range I'm currently doing... example - whatever figure is in Column A I want to multiply by 2 - the result being in Column B. I have figures down to Row 10 in Column A, so the range is A2 - A10. (A1 being a header).
Is there a code I can put in the macro that doesn't set the range to only A2 - A10, and will multiply anything that's found in Column A - except for when the Cell is blank?
I write quite a few macros that require a vlookup formula. The table array is often dynamic which means I must change my program. I am trying to find a way to create the formula to accomodate the growth of the table array. I can count the number of rows in the table by the counta function, but then when I try to use that variable in the formula it bombs.
View 7 Replies View RelatedI cannot seem to get the worksheet function sum to work with varables in this module. It is placing zeros where the summed data should be. The variable are showing proper start and end ranges for summation....
View 5 Replies View RelatedI am trying to add a small table after the last row using the data from the previous rows. I got the code workin as the following with some problems.
the result of the code below is as follows
"= countif(F4: F8," A ")"
"=countif(F5:F8," B ")"
"=countif(F6:F8," AB ")"
"=countif(F7:F8," O ")"
Herein lies a problem... I dont wish to have the values F4, F5,F6, and F7 change... rather, I want them to be constant at F5..............
This works: row(x).select But this doesn't: row(x:"100").select. I also need to do substitute both beginning and end range with a variable: row(x:n).select And multiple ranges: row(x:n, a:b)
I've tried tried numerous combinations of quote marks and parentheses and nothing works. What is the proper syntax?
how can I make this simple macro sum columns that will be of variable length? I would like the sum to appear as the last entry in that column and highlighted.
VB:
Range("H36").Select
Selection.FormulaR1C1 = "=SUM(R[-34]C:R[-1]C)"
Range("J36").Select [code]....
Every week I get a file download from SAP with multiple tabs and on each tab are variable number of rows (can by 10 or 20 or 200, doesn't matter). I recorded a macro to add additional information that is required for the team prior to discussion each week (namely column D, E, K and O).
I am not experienced w VB but I know there has to be a way to account for the fact the rows vary each week. See my code below (pasted only a portion covering a couple tabs but you can see in the first part how it was 11 rows this week. Next week could be 25 rows. So how do I properly reflect that in the macro?).....
VB:
Sheets("BPTO").Select
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-1],css,2,FALSE)),(VLOOKUP(RC[-2],css,2,FALSE)),(VLOOKUP(RC[-1],css,2,FALSE)))"
Range("E2").Select
[Code] ......
In the attached excel spreadsheet, I want to get the result in "Actual" from the sheet "Data"
That means on sheet "Data", I want a macro which will transpose the data from column K to column O into a single column .
-->The macro will delete existing records in sheet "Result" and then start transposing.
I have searched high and low for a macro that can move cell values to other worksheet based on a variable serial number. I have had limited luck with my search but nothing quite reflects my needs. Any help or suggestions would be great. The way that I envision it to work is simple to say but to hard for me to figure out. I must add that I am fair to good with macros; I am using Windows XP and Excel 2003.
Here is the concept:
-I am trying to track several vehicles, their status and there general locations using a variable serial number and an excel macro. The macro would execute the calculated data on sheet “My Taxi Cars” and the results would appear on a separate worksheet called “Location” that is in the same workbook. Please see attached.
-The serial number is comprised of a cell range starting at A2 thru L2 and then concatenates in M2 it would look something like this 123N1110011011. This serial number would allow me to do simple long-range analysis for each of the vehicles. Also in theory at the end of 30-day period I could “replay” my data.
The Breakdown for the alpha numeric serial reads like this:
1) The 123 is the number of the cab.
2) The “N” is for North, etc. and it would equate to a range of cells on a separate worksheet (“Location”).
3) The Ones and Zeros are just simple yes or no answers to the common questions in the Garage at work.
Once the macro is executed the result would be the taxis number (taxi number only, the rest of the number is stripped off) being placed the correct location based off the serial number. I have no idea if this is possible and I would like to thank you in advance for your help. Thanks.
I understand that there are about 1024 different combination's for a binary number that has ten place values. Maybe the answer is to use VLOOKUP or HLOOKUP, but then that changes my analysis scheme. But if you can just help point my nose in the right direction or show me with one example I can take it the rest of the way.
I'm trying to write a macro with a variable number or rows depending on the total number of rows the workbook has.
I tried like this:
Code:
Sub provaanova()
Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range(("$J$2:$J$") & Range("J" & Rows.Count).End(xlUp).Row) _
, ActiveSheet.Range(("$J$2:$J$") & Range("J" & Rows.Count).End(xlUp).Row), False, False, 99, "ANOVA", False, _
False, False, False, , False
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
End Sub
and:
Code:
Sub Provaregress()
r = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range("$J$2:$J$r") _
, ActiveSheet.Range("$K$2:$M$r"), False, False, 99, "ANOVA", False, _
False, False, False, , False
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
End Sub
But it gives me an error. The only way i was able to do it without error was:
Code:
Sub Provaregress()
Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range("$J$2:$J$53968") _
, ActiveSheet.Range("$K$2:$M$53968"), False, False, 99, "ANOVA", False, _
False, False, False, , False
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
End Sub
But as u can see it has a fixed number of rows. ( I need variable number of rows detected on column J, and then run regression with K,L,M as depending variables).
I am creating a macro to tidy up a large data sheet. it is a list of products as follows:
Heading1Code; Heading2date; etc
12
12
12
13
13
14
15
15
15
The blanks beneath each series of products need to be deleted but they are variable and a macro that i write is not flexible enough to remove a variable number of blank rows beneath a variable number of each product.
I'm trying to make a macro'd button that when clicked will select the cells A1:A?? where ?? is equal to the value in cell B1
B1 is a variable number that changes to be the proper amount of rows that I require selected.
It's always A1 down to A9 minimum and A1 down to A400 max.
Once selected I need the macro to copy the selected cells to the clipboard for another application to be able to paste that info.
So far I've been able to get the copy command to work and the range command to work but can't seem to figure out how to put the variable number from B1 into the range command.
is it possible to assign the formula to a variable ? here i am trying to get only the filename excluding the path and assign it to a string variable. but its not working check "strr1" line.
Sub TestReadDataFromWorkbook()
' fills data from a closed workbook in at the active cell
Dim tArray As Variant, r As Long, c As Long
Dim i As Integer
[Code]....
I've made a macro and spend some time making it work across different sizes of data. The last issue I'm having is after the macro sorted out some data, that it will then delete, it has to select the first row and shift select down before deleting it. However, depending on how the data is sorted, the first row could be 9, could be 10 and so on. See below for my code.
Code:
Sub Macro1()
Windows("statistik.xls").Activate
Range("A8").Select
[Code]....
If the first row in my data set is not one of the 3 criteria ("Personligt ejede virksomheder", "Privat", "Reklamebeskyttet"), then the first row # will be 10 instead of 9. If the first two rows are not one of the 3 criteria, then it would be row 11 and so forth. How do I make my macro take this into consideration?
Need to pull data from Sheet4 to sheet1 by Sales Person based on a validation list cell on sheet1.
Each Sales person has a different number of accounts listed on Sheet4. The data is setup like this (my apologies for not knowing how to copy and paste the data)
Will Use Jane Doe and John Smith As examples-
A1, Jane Doe, Customer Name, Data, Data, Data, etc.
A2, Jane Doe, Customer Name, Data, Data, Data, etc.
A3, John Smith, Customer Name, Data, Data, Data, etc.
So Jane Doe has 2 customers total, and John Smith has 1 customer.
I am dealing with a total of 300+ Sales People and over 4,000 customers, all with a different number of customers per sales person.
How in the world can I write a code that will pull all of Jane Doe's customers when she is chosen from the validation list, and paste those customers and their coinciding data where I need it to paste?
I have the validation list working, so all I need at this point is help with the copy/paste code.
I have tried various syntaxes but nothing is working for me. I am using XL 2000 so it doesn't have the relative address function in the macro! So here is what I have
ActiveCell.Range("A1").Select
ActiveCell.R1C1
Range("R1C1:R1C85").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application. ScreenUpdating = True
Range("A1").Select
I need to be able to select from the originating cell which will always be in "T" Col thru to "CZ" col but will be on different rows.
This sounds like a daft question I know but I have searched the forum but not found an answer despite finding a lot about footers. How do I include a formatted variable value in my printed footer? I have a function that gives me the file creation date and I need that in the footer but formatted 8pt Arial Bold. I have no problem inserting a formatted fixed string.
View 9 Replies View RelatedI export data from another programme into excel and have written a macro to move and format this. The number of rows of data exported will be different each time. I need to be able to print this data and want to add it to the macro. I have learnt to use this code to select this data working from the last used cell to the top
Range("a1:d1", Range("a65536:d65536").End(xlUp)).Select
Using the macro recorder for printing one of my exports I got this code
Range("A1:D53").Select
Range("D53").Activate
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup.......................
In my VBA macro, it copies data from this.workbook, and paste to another "destination" workbook. That destination workbook must be opened first before the macro is run.
Within the Macro code, I had to specify the exact name of the workbook which the data is pasted to.
The problem is that the exact name of that workbook which it paste to changes every week.
Is there any method where my macro can be changed and updated with the name of the destination workbook each week without manually opening and editing the code. The user of this.workbook is not technical enough to edit and maintain the macro each week