Why Doesn't My Variant Array Work
Jun 26, 2008
The answer is probably "because I'm stupid", but I really can't get my head around it! I'm playing with variant arrays for the first (and possibly last) time,
The code I have is:
Sub test()
Dim vSheetColours As Variant
Dim iCounter As Integer
vSheetColours = Range("Colours").Interior.ColorIndex
For iCounter = 1 To UBound(vSheetColours, 1)
MsgBox vSheetColours(iCounter, 1)
Next iCounter
End Sub
(Obviously this code doesn't do anything useful - but if I could get it to work, I might have a chance of making my real code work!)
Colours is a range of 8 cells. Each one has some text in, and has a different background colour. I'm trying to store the colours.
If I run this code, I get a runtime error 13 type mismatch, and it highlights
For iCounter = 1 To UBound(vSheetColours, 1)
But if I replace
vSheetColours = Range("Colours").Interior.ColorIndex
with
vSheetColours = Range("Colours").Value
it works fine.
View 9 Replies
ADVERTISEMENT
Jul 19, 2014
I want to test how many elements are not empty within a variant array.
For example for arrays Arr1 and Arr2 below the answers would be:
- for Arr1 not empty elements=1
- for Arr2 not empty elements=0
Arr1(0)=empty
Arr1(1)=2
Arr1(2)=empty
Arr2(0)=empty
Arr2(1)=empty
Arr2(2)=empty
I've tried with function COUNTA inside VBA but counts even the empty values:
Code:
NotEmptyCells = Application.WorksheetFunction.CountA(Arr1)
Is there another function to count this from an array or alternative way?
View 9 Replies
View Related
Jul 13, 2006
Is it possible to use an array without looping through it? I have code that has two loops: One that is just for the array and the other that loops through the data. It would be nice if I could get it down to one loop, but I'm not sure if it's possible. For example, if you have
Dim varArea As Variant
varArea = Array(1,2,4,6,8,12)
For x = LBound(varArea) To UBound(VarArea)
Do While Not C Is Nothing
Code here
Is there a way to advance to the next item in the array without using the loop.
View 10 Replies
View Related
May 23, 2007
I am using strongly typed code, but I am also pulling data from worksheets into variants. e.g.
Dim MyArray As Variant
MyArray = [MyNamedRange]
is there any shortcut to convert the variant to a typed array, which doesn't just involve looping throught the variant and using a casting function, e.g.
Dim MyArray As Variant
Dim typedArray() As type
MyArray = [MyNamedRange]
typedArray = shortcut(MyArray)
View 4 Replies
View Related
Jan 24, 2013
I am trying to develop some code to serve as an 'undo' for several macros that I have. They each take a selected range and perform some changes to that range. I have managed to make some code that will undo the last macro run but would like to make something that can go back several steps. To that end, I have started with the following code but am running into an issue when I need to use a variant array to hold multiple arrays of a custom defined data type:
VB:
Type SaveRange
Val As Variant
Addr As String
[Code] .....
This declares some public variables I'll need, each as an array so that I can iterate through several steps of do/undo using the undoIndex. I then use them to save each range I am about to change by calling the following macro within my actual data-manipulating macros:
VB:
Sub Save_RangeForUndo(rng As Range)
Dim i As Integer
Dim cell As Range
undoIndex = undoIndex + 1
[Code] .....
If you look at the last line here, this is my problem; I can't figure out how to properly use an array to hold each instance of OldSelection() for later referral. Just for completeness, here is my actual undo macro:
VB:
Sub Undo_Operation()
Dim i As Integer
OldWorkbooks(undoIndex).Activate
OldWorksheets(undoIndex).Activate
[Code] .....
I need to get this OldSlctVariant()() array to hold each instance of OldSelection() so that I can restore them for each consecutive undo. I'm not very familiar with the variant type and anything more than the basic use of arrays.
View 7 Replies
View Related
Apr 25, 2014
i checked and checked and my IF function just gives me the wrong answer... attached is just a sample data..i have over 230 lines to check actually..
View 4 Replies
View Related
Feb 5, 2010
I have a hyperlink to [url] that doesn't work. When I click it I get an error saying "Unable to locate the server or proxy server". But when I cut & paste the address from the hyperlink into my browser (no chance of mistyping), it works fine.
View 11 Replies
View Related
May 19, 2008
As said, the right click doesn't work anymore, last week it was working but it doesn't anymore. When I right-click wherever in the spreadsheet nothing happens but I know it's working because it works outside excel.
View 9 Replies
View Related
Jan 22, 2014
See the excel sheet [URL]
I need to delete all the digits before / and also the / - in the valuta columns. But this =RIGHT(B2,LEN(B2)-6) doesnt work It says > the formula you typed contains an error
View 14 Replies
View Related
Mar 12, 2008
What am I doing wrong here. Some times if I do a =if( ) formula it doesn't work. For example, look at the attached picture. Cell K63 should say "End of Run". But it doesn't, What gives?
Also I have had before where i do =IF(X62>$O$2,"End of Run", 0) (and $O$2 =81) and the cell when X62 is 81, not greater than. I know I can to >=, but thats not what I am doing.
View 11 Replies
View Related
Nov 30, 2012
i got a long macro to delete all rows with contains a column with the value 'xx'. The macro works in sheet 2K, 2F and 1G. But the weird thing is it doesnt work in sheet 1K (i copied the exact same part of the macro out of the other sheets). Is it possible that there are to many rows in the sheet (sheet 1K has 24.000 rows, 50% or more will be deleted with the macro. The error says bug in the line: If Not rng Is Nothing Then rng.EntireRow.Delete It stops showing all the rows wich should be deleted.
Sub GrondeigenarenVerwijderen()
Application.Goto ActiveWorkbook.Sheets("2K").Cells(1, 1)
Dim DeleteValue As String
[Code]....
View 5 Replies
View Related
Jul 27, 2013
im trying to use below formula using SUM and two IF conditions and 1 left formula
Cond 1
Cond 2
Value
22
m9
10
23
m9
10
[code]....
the following formula works to capture the sum of combination 22 and m9:
{=SUM(IF((A2:A6)=A8,IF(B2:B6=B8,C2:C6,)))}
22
m9
20
24
m8
10
however, in my original table, the 22, 23 etc are values with 6 numbers as shown below
Cond 1
Cond 2
Value
2201
m9
10
2301
m9
10
[code]....
following formula didnt work;
{=SUM(IF(LEFT(E2:E6,2)=E8,IF(F2:F6=F8,G2:G6,)))}
22
m9
0
23
m9
0
why the secund formula didnt capture anything when i added left to the first one.
View 6 Replies
View Related
Dec 25, 2013
I have below macro for Sheet2 and i have created a button on Sheet1.now whenever i press this button the macro will run and save Sheet2 as PDF file.
The problem is when i hide Sheet2 the macro doesnt work and it gives an error " Invalid procedure call or argument.
how to make this macro run even when the sheets are hidden ?
Sub PDF_Table()
'Sheet2.PageSetup.PrintArea = "$a$1:$x$140" '*****
'*** can remove the above line if sheet areas are already set and will not be altered
With Sheet2.PageSetup
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.Zoom = 60
[code]...
View 2 Replies
View Related
Jun 12, 2014
I can't get this to work. What am I doing wrong? I keep getting a #VALUE! error.
=SUMIFS($G$2:$G$31,$L$2:$L$30,F37,$B$2:$B$30,G$36)
I want to sum the NUMBERS in golumn G if the DATE in column L matches the DATE in cell F37 AND if the TEXT value in column B is equal to the TEXT value in cell G36.
View 2 Replies
View Related
Dec 4, 2008
This might be extremely easy, but why my Excel (nor Word for that matter) doesn't go to full screen anymore? I'm pretty sure that I haven't used any options, I do have a new graphics card, but all the other applications goes to full screen. I have restarted my computer. Basically I think that it's either some option, or then reinstalling Office.
View 9 Replies
View Related
May 5, 2009
I have a programme which works fine on my computer at home but when I send it via email to work the 'sort' function messes up (there is a chance it could be the 'vlookup' function, though) and all the cells in the sort range lose their formula reference - which is of course a tad annoying.
The part of the programme I'm having difficulty with is this:
Range("SsNo1").Resize(d, f).Offset(a, 0).Select
Selection.Sort Key1:=Range("FRSet1"), Order1:=xlDescending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
View 9 Replies
View Related
Feb 3, 2014
Why doesn't Cancel (Escape key) work while Sleep API (kernel32.dll) is running?
I was looking at making a minor change to a solved thread (see [URL] ....)
I would like the user to be able to exit the form by pressing Escape. I altered the start and end of the sub to below but it didn't work:
START:
[Code]....
END:
[Code] .....
View 2 Replies
View Related
Apr 18, 2009
I always used Office 2003 .. I just installed Office 2007 to try it out. But everything doesn't work in Excel 2007, which does work in Excel 2003.
I added an example of the list, but here are the codes:
Sheet1
View 2 Replies
View Related
Jan 25, 2010
I have a workbook that I transfer back and forth from my desktop to my laptop, that uses Sendkeys to add code to the active pane in VBA. It doesn't work on my laptop, but works fine on my desktop.
Both computers have Vista. Is there a switch somewhere to make Sendkeys work?
View 7 Replies
View Related
Mar 10, 2012
I'm not sure why this macro in workbook "A" is not working when checking for the activesheet sheet opened in workbook "B"? I've included the tab name I'm looking for and the tab name opened in the workbook "B" in the MsgBox to verify it can pull the tab names properly in workbook "B" and it returns correctly. I'm not sure why the If Then Else is not working if that is the issue here.
Code:
Sub testmonthcheck()
Dim art156 As Workbook
Dim mm As String
Dim mmm As String
Set art156 = Workbooks("Actual_Run_Times_156.xls")
[Code] ........
View 1 Replies
View Related
Mar 23, 2012
HTML Code:
If Left(Range("H18"), 7) = A23C567 Or Left(Range("H18"), 7) = A65C321 Then
ActiveSheet.Cells(6, 7).Value = "Business and Private Banking"
End If
Im trying top use the above bit of code and it does not work when the criteria is Text , so if I simply change the above to =1234567 it works fine -- But I need it to be alpha numeric
View 6 Replies
View Related
Apr 6, 2012
Why doesn't a three column formula work?
Column C is Credit, D is Debit, E is Balance
I put the following formula in the Balance column
=E21+C22-D22
where the first term refers to cell immediately above. In other words, this formula takes the prior balance, adds a credit if any, subtracts a debit, if any, and gives a new balance.
The formula worked on the cell I put it in. It will not work when I copy and pasted it into the cell below the first one. Error I get is circular reference.
View 2 Replies
View Related
May 24, 2013
So, I'm trying to come up with a dynamic graph title. I highlight the graph title, go to the formula bar, and type:
Code:
=CONCATENATE(Sheet1!$C$1," All Servers")
"That function is not valid". Yet, the same function, placed in a cell, works perfectly. I suppose I could use an intermediate cell to hold the concatenated text and point the graph title to that cell, but I dislike having contextless cells like that floating around. Is there a way to apply that formula, or some other with the same effect, directly to the graph title?
View 4 Replies
View Related
Dec 9, 2013
I'm trying to create a code that autofills the next empty row in colum A with a number. What I have at the moment is:
'Create Index in Transaction list
x = Range("A" & Rows.Count).End(xlUp).Value
Sheets("Transaction list").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = x + 1
If I run this code in isolation from the rest of my code (which is copying and pasting values from one sheet to another) it works, but when I run the full code it only autofills the rows with "1".
View 3 Replies
View Related
Feb 15, 2007
I found the thread about how to get the second best result (=LARGE(range,2)) but that can't handle when I have ywo top values and a lower third value. It still return the next value after the top value, which is the same value. I want to get the next lowest vaule.
Example:
In this row:
7
7
6
5
5
4
I want to get the value 6 and the formula =LARGE(range,2) gives the second number 7.
How do I get the second value that I want?
Maybe if I use the RANK() formula in some way, but how?
View 9 Replies
View Related
Jun 4, 2007
I'm trying to simplify a formula that I'm using in a spreadsheet that's being used mostly in Excel 2000.
2 reasons I'm doing this:
1) It doesn't work if the worksheet hasn't been saved yet.
2) It's ugly
=DATE(YEAR(DATEVALUE(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,3) & " 20" & MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+5,2))),MONTH(DATEVALUE(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,3) & " 20" & MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+5,2)))+1,0)
The formula returns the last day of the month of the name of the sheet. For example, if the sheet is names "Mar 07", it returns 3/31/07. (yeah, when the 2100 issue becomes a big deal, I'm not going to be ready but I have 92 years to think about it)
Even if I can't make it prettier, does anyone have a way to get the sheet name into a formula without VBA Code in a file that hasn't been saved.
View 9 Replies
View Related
Jul 30, 2007
I am trying to run a macro in the background. I have added the Application.ScreenUpdating = False (and True at the end) to my code but no luck.
View 9 Replies
View Related
Aug 14, 2007
I have a sumif formula in one workbook that relates to information off of another workbook...when the other workbook is open the information populates no problem when you close the other workbook I get the #VALUE error. Is this typical of SUMIF when referring to another workbook? I have a vlookup function that refers to the same workbook and it works fine when the other workbook is closed?
View 9 Replies
View Related
Jul 24, 2006
I have a spreadsheet with data similar to the following:
12111000 MILK, COW'S, FLUID, LOW PERCENT
27313010 BEEF, NOODLES & VEG (W/ CARROTS/DK GREEN), NO SAUCE
11100000 MILK, NFS
11111000 MILK, COW'S, FLUID, WHOLE
If I use the following code to pass in a string variable and then attempt to find the string it never sees the text in line 2; or any line that contains (). The code is simply a test to try and figure out what i'm doing wrong. The actual goal is to search the entire sheet for text similar to that entered in by the user and then copy every row that contains similar text into another worksheet.
Sub CopyStuff()
strVariable = "car" 'I have tried "*car*" also
With Worksheets(1). Range("b1:b500")
Set c = .Find(strVariable, LookIn:=xlValues)
If Not c Is Nothing Then
firstaddress = c.Address
Do
Set c = .FindNext(c)
MsgBox (test)
Loop While Not c Is Nothing And c.Address <> firstaddress
test = c.Address
End If
End With
End Sub
View 9 Replies
View Related
Jul 9, 2007
I've written the following bit of code but the error handling doesn't work properly: ....
View 9 Replies
View Related