If And Goto Statement Not Working.
Dec 3, 2008I have this bit of code and I am curious why when the activecell is J29 it will not goto line 20 it just keeps running to the next line?
View 4 RepliesI have this bit of code and I am curious why when the activecell is J29 it will not goto line 20 it just keeps running to the next line?
View 4 RepliesWhat I am trying to accomplish with the code below is that if sheet statusReport does not have any information on cell N2, then execute the code after NextLine:
If there is information then perform the Else statement and continue through the end of the code. However, I am getting an error of Else without If. If I remove the Else, then my the code below NextLine: does not execute.
I narrowed down the issue to the GoTo placement, but I don't know of any other way I can skip the For Loop after the If/Then statement. I tried doing an On Error, but there is no Error, the cell checks empty.
I am hitting a brick wall.
Code:
Sub copyeeInfoToClientSheets()
Application.ScreenUpdating = False
With Sheets("byEmployee")
Set rng = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With
For Each WS In Sheets(Array("allEmployeesAnnualized", "allEmployeesHourly", "allEmployeesSalary"))
WS.Rows(7).Resize(rng.Count).Copy
rng.Copy Destination:=WS.Range("A6")
[code]....
I have some code below. I have error handling in place for when it tries to open a specific file. If it isn't there then user has option to continue and ignore this file, or browse and select a new one.
The problem is, when the user wants to ignore the file, the "Resume Next" continues to run the VBA assuming the file was ok i.e. the code after the line to open the file. What I would like is for it to skip the succeeding code and go to look for the next file.
Below is the VBA:
Code:
For i = 0 To 2 Step 1
'add in error handling for if the file is missing
On Error GoTo MissingFile
Workbooks.Open Filename:="\hbeu.adroot.hsbcdfsrootgb002hfcfinance01fnce" & qfolder & "Data" & qfile(i), UpdateLinks:=False, ReadOnly:=True
[Code] .........
Missing File:
qMissingPrompt = "There was an error opening data file. Click OK to browse or Cancel to ignore and move to next file"
qAns = MsgBox(qMissingPrompt, vbOKCancel)
'click cancel - ignore error and move onto the next file
If qAns = vbCancel Then
[Code] .......
So, where it says Resume Next, currently it will start running the following (after On Error Goto 0)
Code:
Set datawb = ActiveWorkbook
range("A2").Select
Do Until ActiveCell.Value = ""
etc.
What I would like it to do is go back to is to go to the next i
Code:
For i = 0 To 2 Step 1
Or even to go to the 'Next' statement at the end so that it moves onto the Next i and tries to open the next file.
Cells H5:S5 have a formula in it to determine whether or not the allocation calculation needs to be made. I figured it to be straight forward enough
View 3 Replies View RelatedThe statement below was working perfectly until I added the last argument highlighted in red. Also, the statement in red works as expected when used sepeartely. It doesn’t work when combined with all the other proceeding IF statements.
Additionally, all the values that I’m testing with my IF statements are being populated using vlookups. Again, the statement works fine but I just can’t put the last statment (in red) with all the others and get it to work.
I have two worksheets named "Data" and "Product". I want to use the following macro to sort the records depending which sheet is active. If I am in the "Data" sheet, it does the sort in the "Product" sheet? I was expecting it to ignore the second IF statement when I am in the "Data" sheet?
View 3 Replies View RelatedI wrote this short program that parses out last name and zip code from one cell into two cells so I can map the sales data. I flagged each sale as either member, non-member, or neither, based on the prices of the items (members get 25% off). I used the case statement below.
the problem is that for one of the sale items it's getting flagged as "neither" despite being at the members price level. it works for that same item in other records. the quantity at error point is 3 for two of the errors and 6 for the third, but the strange thing is it works for a few other sale records in which the person also bought 3 of that item (the quantity is not the culprit, or sole culprit).
Here's the code. Obviously Price and Quant are the two variables involved. I declared Price as a double and Quant as an integer, even though both have two decimal places in the data file. That way the product of Quant and each items price for one and Price will both have only two decimal places even though it was rounding off that product to two decimal points without declaring either variable. I cut out some of the case statement so as not to exceed the character limit.
How should my multiple If And Or statement syntax read?
On first button click If "BUY" or "SELL" is in column 83 then copy as the code indicates to sheet "Orders" as the code indicates. This it does.
On second button click don't copy the same "BUY" or "SELL" that has already been copied to sheet "Orders".
So the Countif should set J to greater than 1 for the previous copies and be ignored and only copy from sheet "Main" the new "BUY" and "SELL" that show up.
I'm getting double and triple copies of items already copied that should set J to > 1.
Code:
Option Explicit
Sub BuyCells()
Dim c As Range
[Code].....
I have the macro below that I want to use to conditionally delete all columns where the first row of each column does NOT have the following values but it seems to be deleting most of these columns as well all the others.
Fellow Excellor
Sub Deletecolums_Conditional()
Application.ScreenUpdating = False
[Code]....
creating a multiple if statement. I have 3 columns in Sheet 1 called "Raw Data". Column A is dates, Column B is Clients and Column C is Products. I want to count the number of products sold to a specific client on a specific date. In Column A, the are multiple dates repeated as there are different sales reps so i have the dates repeated several time.
the current formula i am using is:
=COUNTIFS('Raw Data'!$A:$A="2013/01/01",'Raw Data'!$B:$B,="MotorCity",'Raw Data'!$C:$C,="Cars")
the problem is that i keep getting 0 as a value. If i remove the Date as a variable, the formula works. I just cant seem to count multiple criterias if the date is one of them.
I am in the process of converting my programs over so as not to use these and I am already seeing a drastic difference in speed.
I have run into a problem that I need help with. I have a spreadsheet similar to the example below. The first column contains a list of college majors and after each major is a row of classes that are required by that major.
A25346 ENG101 MAT115 PSY150
A35678 ENG111 MAT115 SOC101
A23456 ENG101 MAT116 HIS201
The first thing I need to do is search down the first column for the major. Once the major is found I need to search across the row for the class. I am having trouble searching across a single row for the class.
Here is the section of code where I experience the problem
Set rMajor = wsMajor.Cells.Find(What:=Major, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If Not rMajor Is Nothing Then
majorrow = rMajor.Cells.Offset(0, 1).Value............
In the below code I am trying to Freeze the panes on "B3" and Zoom out of the page to 90%. I keep getting errors on these two lines and I believe I am not coding these lines properly. (Errors are occurring in the "With" statement with all the PasteSpecials)
Code:
Sub Export()
Dim LastRow As Long
Dim TabString1 As Variant
Dim TabString2 As Variant
Set NewBook = Workbooks.Add'Â Â Â Â With NewBook'Â Â Â Â Â
[Code] ...........
How do I use the GoTo so that I can Specify A line of Code to go to...
for example
I have some coding under the property list command button which filters the date 3 times and copies the filtered data to another sheet. This works with data in the sheet, however if there is no data on the sheet I get an error message.
There is a line that says on error goto reset1 on the first filter and goto reset2 on second filter (and so on) which works on the first filter but not on the second or third filter. I have attached the file.
I have a drop down box linked to cell A2 for example, when the change is made on the drop down box the linked cell returns the value 1,2or 3. I'm not sure if I require a code or an 'IF' command - but what I would like to achieve is that say when 2 is selected I want to goto sheet 3 A1, if 3 is selected then sheet 3 A2 and if 1 then nothing happens. Or can I make the function dependant on what the drop down box displays e.g Correct, Not Correct and Requires Change. (1,2 and 3 respectively).
View 3 Replies View RelatedI have a wicked wide spreadsheet that has 76 dates. These dates are in weekly increments. (IE 7/4, 7/11, 7/18)
I already have it set up to highlight the current week that I'm in, and there is an arrow above the column. Can I make a button to go to the current week? Like today, I would go to week 7/11.
I saw something with find.max, and give the date in Excels number format. Is this the right way to go?
i have this code that gives me 1st row of data , from Row 10 of every sheet in workbook, how can i modify to give me row 11 ,12,13,14,15,16 as well upto row 21 if there is Data in Col C ( max range is C10:C21) ,
For intX = 1 To Sheets.Count
For intY = LBound(arySkipSheets) To UBound(arySkipSheets)
If Sheets(intX).Name = "MachCapRpt" Or Sheets(intX).Name = "MachAdSht" Or Sheets(intX).Name = "Times" Or Sheets(intX).Name = "MachSchd" Then
Else
.Range("A" & intNextRow).Value = Sheets(intX).Name
.Range("B" & intNextRow).Value = Sheets(intX).Range("B10")
.Range("C" & intNextRow).Value = Sheets(intX).Range("C10")
.Range("D" & intNextRow).Value = Sheets(intX).Range("E10")
.Range("E" & intNextRow).Value = Sheets(intX).Range("H10")
.Range("F" & intNextRow).Value = Sheets(intX).Range("M10")
.Range("G" & intNextRow).Value = Sheets(intX).Range("W10")..............
I want to find the cell location of the largest value in a specific column.
for example: column C has 5 rows of different values : 5, 12, 4, 7,9 and I want to find the cell reference of the largest number which is 12.
I know that I need to use "Large" function in order to find the largest number, but what do I have to do in order to find the cell location of it?
I'm using a on error goto approach, heres the code.
View 2 Replies View RelatedI have this code that works, except, for addressing with the Goto - I need to go to the CONTENTS (new row,column) of that location which is being changed elsewhere and I can't figure it out
View 6 Replies View Relatedwhy the On Error GoTo statement only executes the first time an error occurs in the following
On Error GoTo CubeNotFound
For x = 2 To TotalRecords
Cells.Find(What:=WSID, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
'Other actions are located here, but have been removed. These actions take place if the Find is succesful.
CubeNotFound:
Message = MsgBox("WS ID " & WSID & " was not found! Excel will continue with the next WS ID.", vbOKOnly, "WS ID NOT FOUND")
Next x
I have that statement there because if WS ID is not found then VB generates an error that the user won't be able to interpret, and also stops the code. I want VB to continue to the next record if one is not found.
I am trying to copy A1 into F8 only if F8 is empty, if not do nothing.
My code copy A1 into F8 regardless F8 is empty or not and overides my entry in F8.
Private Sub Worksheet_Activate()
If Len(F8) = 0 Then GoTo line1 Else GoTo line2
line1:
Range("A1").Copy
Range("F8").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
line2:
Exit Sub
End Sub
I have to copy and paste from 15 different worksheets to one worksheet each week. The size of each copy varies from 500 to 1000 rows and is sequential for each worksheet. In other words, if I am copying rows 1 to 500 this week, then next week I will copy from 501 to 1000. I would like to do this in a macro. I can easily figure the ranges each week by incrementing, and they can be listed in a workbook. Is there a way to copy that range into the macro as it is running? It would kind of be like saying the range to copy is '=B5' and B5 cell contains the script A501:M1000.
View 9 Replies View RelatedI have recently been advised to eliminate goto statements. While I have not had any trouble with them so far, it is my understanding that a different structure will speed up my macro, which never hurts. Here I have printed a recent macro I wrote with two goto statements in it heart. Could someone show me how they would rewrite this bit of code while still getting the same results? Here the code compares the active cell value against B and if it does not match, it goes to the next value and compares. If it goes through more than 100 searchs and the term is not found, then it has checked the whole list and needs to stop search, thus the progression of C. A few options are offered before closing down the macro, but ultimtaly, C needs to get to 100 to exit the sub. Thus the goto Alpha that repeats the addition to C.
Alpha:
If ActiveCell.Value CStr(B) Then
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then GoTo Beta
C = C + 1
If C = 100 Then
I = MsgBox("Complete. Do you want to continue with Received data?", vbYesNo)
If I = vbYes Then
Windows(D).Close
Call ReceivedDataUpdate
GoTo Epsilon
End If
Any way to do the following on a per sheet basis? ie: Sheet1 goto A4; Sheet2 goto G27?:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Goto Sh.Range("A1"), True
End Sub
This works to make them all go to the same cell, any ideas on a way to make them differ per sheet?
i know the keyboard shortcut for doing this is End + arrow key... but wat if there are value in between for example
Cat..""..""..""..""..""..""..""..5..""..""
hitting the End + arrow key from the very end will move selection to value 5...
there are empty spaces in between..
1. is there a way to convert the blank spaces in excel to 0 as default value.
2. is there any other keyboard shortcut key to reach to Cat without inturrupting 5 in between..
What I want todo is When a sheet is not found to go to another module and keep running the macro.
If Not SheetExiste("10x1") Then GoTo
NextModule
Else
Sheets("10x1").Activate
End If
Function SheetExiste(SheetName As String) As Boolean
' returns TRUE if the sheet exists in the active workbook
SheetExists = False
On Error GoTo NoSuchSheet
If Len(Sheets(SheetName).Name) > 0 Then
SheetExists = True
Exit Function
End If
NoSuchSheet:
End Function
I am selecting cells from a range by using "SpecialCells" and need to determine whether this produces an error (as it does in the event that there are no cells that fit the criteria) so I write
On Error Resume Next
Then I check the error number and if it is not 0 the next line of code is skipped.
Within the same procedure I do this again, but on a different range and need to check the error number again.
If no error is found, the previous error number will be kept so before running the second piece of code, I add the line
Err.Clear
Is their any difference between this approach or using the line
On Error Goto 0
I want to write a simple macro that does the following.
If cell A1 = YES goto cell A1000
If cell A1 = NO goto cell B1000
If cell A1 = MAYBE goto cell C1000
I will have the 3 options available via a combobox
i have this:
Sheets("Sheet2").Application.Goto Reference:="R1C1"
it is supposed to go to cell A1 in Sheet2.
but it doesn't go to sheet 2?