I'm trying to write a function that I can pass an array along with the data I want added to that array. The function will resize the array, put the data into it and return the new array. Example:
Function AddNewDataToArray(MyArray As Variant, Arg1 As String, Arg2 As String, Arg3 As String) As Variant
'If no elements have been added
Redim Preserve MyArray(1 To 3, 1 To 1)
'Add the first record of data to the array.
'If there is already data in the array
Redim Preserve MyArray(1 To 3, 1 To UBound(MyArray, 2))
'Add the next record of data to the array
End Function
As 2 dimensional arrays are Base 1, the challenge I have is getting it to resize (redim preserve) the array when it has to add the first record. I thought I could just use an IsArray function to test if there had been any data added. If not, then it would run the following...........
Currently I am building a class to keep track of entries I have made during the macro execution. Thus far I have:
Private Type Memory MemoryArray() As Variant End Type
Private Sub Class_Initialize() Redim MemoryArray(0) As Variant End Sub Public Property Let AddToMemory(Object As Variant) 'memory is empty If UBound(MemoryArray) = 0 And MemoryArray(UBound(MemoryArray)) = "" Then MemoryArray(0) = Object ..............
I am trying to write a function that grabs the value of some cells in a column and returns a String array with those values. I am getting a compiler error on the line where I assign a value to an array element. It appears to be assuming that rather than an array reference, I am trying to do a recursive call to the function. The error is "Function call on left-hand side of the assignment must return Object or Variant." I would have done this with by assigning the range directly to the array but the data is in a column rather than a row; don't know of a more elegant way to do it.
Public Function projectList() As String() Dim c As Range Dim i As Long For Each c In Range("FirstProject"). CurrentRegion Redim Preserve projectList(UBound(projectList) + 1) i = UBound(projectList) projectList(i) = c.Value ' *** Compiler error occurs here *** Next c End Function
If I have say several hundred elements stored in an indexed array and I want to clear them each time the sub or function holding them is called, is there a way to erase the contents of the entire array without having to loop through each element. Something like array().clear? Note that each time the sub is called, they are also redimed to some reference.
Secondly, I am struggling to find a solution to something that in PHP, Java and javascript is painfully simple! That is - checking to see if an array contains no elements.
Right now I am writing a macro with a defult action if an arry is empty. Unfortunatly the way I wanted to do it will not work becuse it can't recognize the difference between one entry in the array and no entries:
I'm working with a large amount of data (A21:BZ1503) and I'm trying to identify unique situations where any pre-defined combination of multiple columns in one row is flagged by producing a pre-defined value. For example:
I have my pre-defined criteria in worksheet 'X' hidden in my workbook -- note that there are many blank cells.
VB: Sub CreateFlat() Dim wsData As Worksheet Dim wsNew As Worksheet
[Code].....
In 2006 posting, this code was presented to the Forum. It works perfectly for a one dimension Crosstab. I have 4 dimensions that I need copied to the output.
I have attempted to modify the code, but nothing appears to adjust the pull of more than the first column of dimension data.
see the attached spreadsheet for the Crosstab data and desired output.
1) 4 values contains in each row based on the values from those cells the max value will display.
2) if more than 2 cells have empty,NR or NA text means the entire row has to delete.
3) if 2 or more that means 3 cells having values the empty cell,NR or NA cell will place value with the condition of macro that is 75% of other values which is maximum among them.
I am trying to populate the 2 tables from excel to word. I will be getting the excel file with tables in various sheets. One sheet consist of 2 tables that will be inserted to one word document. So if there are 2 sheets then I will have the tables inserted in the 2 word document. In the excel sheet I have attached, there are 2 sheets with tables in each of them. I have written the code to copy and paste the table to word doc from (general) range A1:G4 (Table 1) and A9:H18 (Table 2) that has empty rows and columns selected. But there are empty rows and columns inserted since the table range is not same sheetwise. I would like get the empty rows and columns deleted in the word table.
Find the attached sample excel sheet and the word documents.
I have a long range of cells (U3:AX3), all of which are empty save one. Is there a way to search through the range of cells, and return the contents of the one cell that contains text?
I would do this with a series of nested IF statements if there weren't more than 30 of them!
I am getting values for my excel sheet from another department excel sheet . everything works fine. If there is no values in the rows in the Department sheet, then i need to hide the rows in my sheet. How to code this in VBA. When they add values to the rows then i should make the rows visble here. Kindy give me a sample of vba code to this or suggest me to solve.
Is it possible to make a cell "really" blank/empty based on an If statement? For instance:
=if(a1>10,a1,"")
Has a value_if_false of "". But Excel interprets this a bit differently than a cell that never had anything typed into it.
So if you have a column full of this formula copied down, and hit <control+down arrow>, you will go straight to the bottom and skip over all rows. Whereas if you have a column with values and empty cells alternating and hit <control+down arrow>, you will only skip the empty cells and go to the next value. Excel treats the conditionally empty cells as if they have a value, when it comes to this type of navigation. This holds even if you copy and paste "Values" for the cells over the formulas.
Is there any way to tell Excel to make the cells truly empty?
I am using the following block of code, which cycles through the data and first deletes any cell with "Legal:" in it, and then cycles through again and deletes any row where the cell is blank.
The problem is that within the data, there are some locations where there are two blank rows in a row. When the code runs through, it deletes the FIRST blank row only, not the second. I Need ALL blank rows within the data set to be deleted.
Code: Sub ModifyNewData() Dim r As Range, rAll As Range Dim WS As Worksheet Dim iLast As Integer
[Code] ........
Also, if there is a way to write looking for blank rows into the first block of code looking for "Legal:" that would be cool too.
If not, just deleting all the blank rows is good. Right now, I have to have the second block of code run twice to get rid of the remaining blank rows.
Using the following code to remove empty rows based on whether a specific range of columns is empty. The code works if the cell has a zero, but not when the cell is blank. An example of the data is attached.
VB: Public Sub DelRows2() Dim Cel As Range, searchStr, FirstCell As String Dim searchRange As Range, DeleteRange As Range
in C a string is nothing more than an Array of characters ending with a null character.
in VBA this does not seem to be the case.I am trying to use the BlowFish code from David Midkiff for some encryption, however the code sometimes fails:
When encrypting a string a string of a specific length should be returned. however sometimes one of the characters of the encrypted string is a null character, and the returned encrypted string (with a embedded null character) is causing me problems. I want to check for the null character and if present redo the encryption. But how do I check for the presence of this null character in a unicode (double-byte) string?
Checking with Len(encrypted) gives the correct length (!) but trying to move each (unicode)character into an array fails when using the Mid() function past the null character in the string.
Now I can use
byteArray() = StrConv(unicodetext,vbFromUnicode)
to get the lower byte of each character into an array easily, but how do I do this for both bytes of the unicode characters?
Using an integer array does not work other than through
intArray(j) = CInt(AscW(Mid(Outp, j, 1)))
which fails on the nullstring in my encrypted text.
I have tried with variants but so far no luck. I thought if the string was entered into a variant then I could also address the variant as an array of bytes, but that does not seem to be accepted by VBA.
I am trying to populate many arrays with the same code using something like this. For this test, assume the following data in A1.
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
Code: Sub populate() Dim firstArr(5), secondArr(5), thirdArr(5), fourthArr(5), fifthArr(5) As Integer Dim r, c, num As Integer
[Code]....
The above code does not work of course and falls over. I am unsure whether I should try and concatenate with something like this eg "" & arrName(i) = Cells (r,c) or go down a different route.