Excel 2010 :: VBA Sheets Copy Function Works But Then Jumps To Beginning Of Function

Apr 8, 2014

I'm having trouble using the worksheet copy command in a VBA subroutine. I have the following line in my code:

[Code] ........

When I step through my code and execute this line, the sheet is copied as expected and put in the correct place, but then instead of the next line of code being highlighted, the pointer jumps to the first line of a function (in a different module) in my code.

The problem is that whenever I have any browser open, IE, Chrome, Firefox, etc... the Cut & Paste, Copy & Paste function does not work correctly in Excel 2010.

When I Cut or Copy the blinking marquee around my selection briefly appears and then disappears. When I try to paste, I only have two options under the paste special function: Unicode Text and Text, same with cut and paste, however, the text doesn't actually cut, it only copies.

As soon as I close down any of the mentioned browsers, the full functionality of the cut/copy & paste functions are restored, no need to restart excel.

I need to have open a browser most of the time for work as our system is web based, so closing and re-opening is more than just an annoyance.

I am trying to copy one worksheet using the "move/copy" function that is available when you right click a tab name and want to copy the worksheet in the same workbook

The steps I'm using are:

1. Right click the tab name 2. Select Move or Copy, 3. Select Create a Copy 4. Click OK

Doing all of the above does not work. When the new worksheet opens, all columns are the same width. It seems to be stuck on "autofit column width" setting of 8.5. The original worksheet is several columns wide all with different width settings.

I've also used Copy, Paste Special and selected column widths and that does not work either.

Whilst stepping through code in any new sub/ function that I create in VBA, VBA Editor (seemingly arbitrarily) jumps to a line in a completely different function.

I have a system running Windows 7 Professional (32 bit) and MS Office 2010.

In Excel 2010, I have a spreadsheet that contains several hundred rows of data. When I cut and paste a section of data, Excel jumps to the top of the spreadsheet. This does not happen when I copy/paste, just cut/paste.

The situation I have on my hands is over 200 users, were the majority can't use Excel's built in function to create PDF's. Yes, I've tried to teach them, but I'm probably not a good teacher.

So, I've resorted to create a button at the top of the worksheet, that says "Create PDF". I thought this was gonna be very easy to program, but alas.

Is there a way to start the built-in Excel dialog that happens when you click "Create PDF/XPS" in "Save & Send"?

Having problems with the code below on a 2010 Excel spreadsheet. The function flags me at first line and highlights Mid. I get a "compile error, cannot find project or library". I'm trying to set GetSheetName = m_sSheet but the GetSheetName function is not declared as returning any type.

Code: Function GetSheetName(ByVal m_sFormula As String) As String Dim m_sSheet As String

m_sSheet = Mid(m_sFormula, 2, InStr(m_sFormula, "!") - 2) If InStr(m_sSheet, "'") Then m_sSheet = Mid(m_sSheet, 2, Len(m_sSheet) - 2) End If GetSheetName = m_sSheet End Function

I'm currently working on my masters dissertation and am using excel 2010.

Basically, I'm trying to generate a list of say, 1000 numbers within a range. I can already do this using the rand() function. However, I need excel to take each random number, apply it into a formula, and then list the answers in a seperate location. This would be easy to do if there was one simple function (which i could just insert into any adjacent cell). The problem is that each random number value is input into a table. The table, which has about 10 columns and 200+ rows, gives one final answer.

I'm sure there has to be a faster way than creating 1000 tables for each random number generated.

Let's say I have a list of 1000 random numbers in sheet 1. the function table is in sheet 2 and produces the answer in the same sheet, in a single cell. I'd like excel to use each random number generated, input it into the function table, attain the answer from the table, and list it in the cell next to the random number.

Where I have X number of Lists, each composed of two columns. The 1st column has the name of each item in each list, and the 2nd column has the value for that item.

What I'd like to do is create a function that would let me choose two lists, and tell me the amount of items in List X and what their values are in List Y, and then total them. Also, I would like it to work the opposite way, and tell me the amount of items in List Y and what their values are in List X, and then total them.

So for example, If I wanted to look at lists 1 and 2, the function would calculate that for List 1, Items D & E are found in List 2 and have a total value of 25%. For List 2, Items D&E are found in List 1 and have a total value of 17%. For all items not in both lists, it would return values of 0.

The code I came up with so far looks like this:

Function AK_Overlap_Go(x, y) Dim Temp(1 To 2, 2 To 1) Dim x As Integer

[Code]...

One of the problems I'm having is that the lists contain a different # of items, and so I think I need to loop the vlookup for each row. However, I'm not sure how to do that and get the cumulative values for each list.

I'm currently working on my masters dissertation and am using excel 2010.

Basically, I'm trying to generate a list of say, 1000 numbers within a range. I can already do this using the rand() function. However, I need excel to take each random number, apply it into a formula, and then list the answers in a seperate location. This would be easy to do if there was one simple function (which i could just insert into any adjacent cell). The problem is that each random number value is input into a table. The table, which has about 10 columns and 200+ rows, gives one final answer.

I'm sure there has to be a faster way than creating 1000 tables for each random number generated.

Let's say I have a list of 1000 random numbers in sheet 1. the function table is in sheet 2 and produces the answer in the same sheet, in a single cell. I'd like excel to use each random number generated, input it into the function table, attain the answer from the table, and list it in the cell next to the random number.

I am working with Excel 2010 and I have a problem that I can't seem to figure out. I am trying to find the first nonzero cell and begin an average function from that cell and down through 29 rows (a total of 30 rows).

Sub average()

FinalRow = Cells(Rows.Count, 3).End(xlUp).Row For I = 3 To FinalRow If Cells(I,3).Value 0 Then 'I use the above to identify the first nonzero cell ActiveCell.FormulaR1C1 = "average(........)

This is where I am stuck, I don't know how to code the first nonzero (which can change with different data) cell and average rows below it.

I think I need some version of a lookup for match function. Here is essentially what I need: I have a column of data points. I need to output every position at which the data point changes to a different value (going from top to bottom). See below for an example.

Here is some sample data (with column headers)

Position Data Pt

1 -7.5

2 -8.0

[Code] .......

Here is the result I need (I want to put a consistent formula into the second column below that returns the results shown in the second column below):

split 1 position 2

split 2 position 4

[Code] ........

Is what I am describing possible? Because I am inserting this into a template, I ideally need to do this outside of any sort of VBA work.

The project is to take an unsorted list from the first worksheet in a workbook, and based on the value in column A, copy the row data to other worksheets. It's just a straight copy of nine columns of data, and could either include or exclude that first column. (Since that value will always be the same on every row, there's no real need to include it except as a quick visual affirmation of which worksheet is being viewed.) The number of rows of data in the first worksheet are unknown, so the range is not fixed; and the number of expected matches are unknown.

I've found all kinds of advice about using a macro (but I can't use a macro, because the workbook will be maintained by someone who has no VB training), or if they do refer to formulas, say nothing more than "use VLOOKUP, or OFFSET and MATCH".

All the Excel Help file and online references I can find only show how to use VLOOKUP to copy data from a single column, as the purpose and design of that function. How is it possible to use VLOOKUP to copy the row of data?

And to copy into a new row for each match?

I can't even find information on whether that function is entered once for each worksheet or whether it has to be copied into each row.

I have a very simple spreadsheet that I use for preparing quotations. It was created on my PC at home and includes a simple roundup function (=ROUNDUP((F199*G199)+F199 2) ).

I now use this spreadsheet on my PC at the office and the function works perfectly well but if I try to edit it, or create a similar rounding fx, on my office PC I keep getting the error message "You've entered too few arguments for this function".

I've tried using the Help Menu in Excel but even if I copy one of the formulas from the Help Menu into the spreadsheet I still get the error message. The 2 versions of Excel are the same (2003). I tried inserting a ',' and a ';' in front of the '2' but this has also not helped.

I have attached a sample of the offending spreadsheet. The rounding function is in column "B"

I’m trying to do the following IF function but as far I can tell IF only works with 7 different selections.

Cell B2 contains the numbers I through 8 Cell D2 contains a pre-calculated number (e.g. 53.012) Cell F2 is the cell that I need an IF function or something similar – the function would be as follows =IF(B2=1,D2*1.000) =IF(B2=2,D2*1.00057) =IF(B2=3,D2*1.00171) =IF(B2=4,D2*1.002281) =IF(B2=5,D2*1.003421) =IF(B2=6,D2*1.003991) =IF(B2=7,D2*1.004215) =IF(B2=8,D2*1.004538)

I was trying to explain modulus to someone and they wanted to know why you can "flip" symbols mod(-6,7) = 1 in Excel. So I got to explaining that -6 Mod 7 is the same as -6-(|-6/7|)*7 which is how you get 1.

And that's when I realized... |-6/7| = 0 not -1. Then I looked in VBA and sure enough -6 mod 7 = -6. Apparently the problem boils down to the Integer conversion. Excel is performing the integer coversion by rounding down (INT) wheras VBA appears to be using CINT.

So here is how it work out in excel: -6-(|-6/7|)*7 -6-(|-0.857142857|)*7 -6-(-1)*7 -6--7 -6+7=1

But in VBA you get -6-(|-6/7|)*7 -6-(|-0.857142857|)*7 -6-(0)*7 -6-0=-6

If you run the Int function on a product of two variables, it will return a different (wrong) result if the variables are both defined as single:

Sub roundingtest() Dim a As single Dim b As single Dim cases As Integer a = 18200 b = 0.01 cases = Int(a * b) Debug.Print cases; End Sub

this returns 181 instead of 182. If you define one of the variables as double, then it works fine. Is it just me?

Anyway, I found it to be quite useful, as i was trying to get a function to round to the first higher integer - as opposed to the first lower. so 182.1 -> 183 182.9 ->183 182 ->182

So weirdly enough, int(a*b)+1 does the trick! Of course if a or b is defined as a double, then it all goes to 182. So without any IFs, this works real nice!

I am looking for a function or a formula that performs the same process in Excel 2010 as:

Data Tab -> Sort & Filter -> Advanced -> *radio button* Copy to another location -> List range: A1:A100 -> Copy to: B:B -> *radio button* Unique Records only.

What I wanted was to a function, say, "=LastModifiedDateOf(CELL)", where CELL, is a parameter that indicates the cell I want to monitor. If the value of such cell ever gets changed, the cell containing the function has its value updated to the current date.

E.g. A1 = "AA" A2 = "=LastModifiedDateOf(A1)" -> "10/03/2011 10:30:32"

Both AddIn-files are in the same directory (the default AddIn directory).

This call causes the error message "runtime error 91: object variable or with block variable not set".

This problems came up with providing an existing Excel2003-AddIn for Excel 2010.

The same code runs in following cases:

1. call a function in an Excel2003-AddIn (.xla) from another Excel2003-AddIn (.xla) 2. call a function in an Excel2003-AddIn (.xla) from a Excel2010-AddIn (.xlam)

I'm using Excel 2010. I have three columns. Column A contains the date, Column B contains the time, and Column C contains the date and time. Column C is the result of a formula, which adds Columns A and B (ie. =A2+B2). So I have the following...

Date Time Date and Time

1/15/13 9:00:00 AM 1/15/13 9:00:00 AM

1/15/13 9:00:05 AM 1/15/13 9:00:05 AM

[Code] ....

I'm using a defined name to store a date and time, which I'm going to use as a lookup value in a Match function. I've defined MyVal as follows...

1/15/13 9:00:20 AM

Excel automatically converts this to the following decimal number...

=41289.3752314815

When I first run either of the following two macros, they correctly return 5...

Code: Sub test1() Dim x As Double x = [MyVal]

Debug.Print Application.Match(x, Range("C2:C10"), 0) End Sub

Sub test2() Dim x As Date

x = [MyVal] Debug.Print Application.Match(CDbl(x), Range("C2:C10"), 0) End Sub

However, when I save and close the workbook, and then re-open it, these macros both return an error. Is this some sort of bug in Excel?

I'm trying to get the Median (and min/max later) of certain values on a different sheet. For example, I'm operating in one sheet and pulling the values from the sheet "Form Responses". I want a median for numbers when the values in column B are "Aransas" and the values in column D are Yes. The values are in Column F. My formula is:

I have a column, where i want to calculate the difference between today and another date/or viceversa. The problem is, that in the first two cells, it calculates it well, but then, it shows #VALUE and when I press to see the "calculations steps" , it shows "29/09/2009"-40049. It turns the today function into a number. Why?

This is a function to add the ascii values of a string to give a single value. Initially I wrote this as a Sub routine and it worked fine, but when making it into a function, I get this error. From a little research it appears that you can not use a string as an argument for a function call, yet that defeats the object of this particular function.

The intention of this function is that it works on a name in a given cell and the value (an integer) that is produced is then displayed in another cell, or if using it as a formula, the cell the formula is in.

I simple wrote the work "Hello" in cell A1 the ascii values of these added ignoring any spaces give 500 which is correct.

I've been working on a payroll program for my small biz. I'm close to done BUT...

When I use the Index Match function in a cell it works great. However I need to copy it down a column to work for pay periods going forward. When I copy it down of course it puts zeros or N/A.

Columns:

Gross Fed FICA Medicare State Net F G H I J K

Gross is user input. FICA Medicare State and Net are simply calculated on the sheet. But to get Fed Income tax I use the Index Match function and it works perfectly. The rows increment properly with each new user input.

This is the code in Column F. You can see where it uses the result in Column G to look for a value in sheets("SingleWH").

My question: Fed Income tax is dependent on what the Gross is in order to look up the tables with the Index Match function. How do I get the result of the function into column G? Can I increment up Column G and ignore the zeros that dragging the function down G creates?

The background to this question is that I'm trying to replicate conditional formatting using a user VBA function, because I require a thick border around the cells (and the conditional formatting within Excel only has thin borders)

In the final function, there will be 9 combinations of formatting {Red, Amber, Green} interior with {Red, Amber, Green} thick borders.

The formatting is determined by a number in another cell (the "target" cell), which returns a value 0,...,8

I've only got as far as filling in the interior for the first combination, but the function returns an error "Application-defined or object-defined error".

VB: Function VBA000_003_SetRAG(strTargetRange As String) 'strTargetRange is the reference for the target cell that contains the value 0,...,8

On Error Goto handler [code]....

There is not a problem with the target range, if I remove the two lines relating to rngCaller then the function works OKExecuting the rngCaller.Interior.Color = RGB(255, 0, 0) command through the Immediates window works OKI've tried calling a subroutine & passing the range across

Same errorChanging the range in the subroutine to an absolute range (eg. Sheet1.range("A1")) also causes the

same errorExecuting the subroutine on its own (with the absolute range) works OK

So my guess is that it's a bug/limitation with Excel VBA when trying to execute commands from inside a user function

I have two sheets. One is named sheet1 where all my data is and sheet2 where all my values are. I want to do a find a replace on column N (sheet1) using the data in sheet2. Column A on Sheet2 has all the values that are found in column N and column B on Sheet2 has what the data should change to.

So for example:

Sheet1 says the following on column N: cat dog lion bear

Sheet2 says: Column A A1: Cat A2: Dog A3: Bear

Column B B1: 2 B2: 8 B3:15

I want the values on column N to be replaced with 2, 8, 15 and so forth. I use excel 2010.

My objective is to pull specific values from an external file corresponding to the correct name and year of my choosing. The first way I thought would be best is to use an INDEX/MATCH function. The problem is the external files change names so I would need a method to easily change the source file name from one cell. I then stumbled across the INDIRECT function, but the INDIRECT function will only work when the source file is also opened. I then came across Harlan Grove's pull function which allows you to import data from closed excel files.

So, this is what my formula looks like: =INDEX(pull("'"&G12&"");MATCH(C15;pull("'"&G14&"");0);MATCH(D15;pull("'"&G16&"");0))

Cells G12,G14, and G16 contain the file paths for the ranges. C15 is name and D15 is year.

The problem I have though is that when I try to execute the function, Excel gets stuck. if the code cannot handle large amounts of data. I tested the code with a simple SUM function for a small range from an external file and it worked just fine.