Redim Array 2 Dimensions
Apr 28, 2014I iterate through a list and store the data in an array.
[Code] ..........
This works fine, but I tried to have 2 dimensions to the array and It no longer works!
I iterate through a list and store the data in an array.
[Code] ..........
This works fine, but I tried to have 2 dimensions to the array and It no longer works!
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 have an array that is going to have a variable length every time the macro is run. I set a really high length at the beginning and when I want to unload the data, I want to redim the array to only the amount of data that was loaded into the array.
I am getting an error of "Array already dimensioned" when use the redim function near the end of my code below.
Code:
Private Sub Trend_Click()Dim GraphRow As LongDim TodaysYear As Integer,
Adjustment As Integer, EndYear As Integer,
StartYear As IntegerDim X_Axis_Array(1 To 100) As VariantDim SelectedStmt As StringDim X_Axis_ArrayEnd As IntegerTodays
[Code] ........
I've written this function to re-dimension an array based on the size of the range it is storing. Originally all my variables were simply declared as:
Code:
Dim XLRecOutput() as Variant
I then wrote a function which took the variable and the range as follows:
Code:
Function LoadRangeToArray(dataArray() As Variant, selectedRange As Range, Optional blnLoadData As Boolean = True)
With selectedRange
ReDim dataArray(1 To .Rows.Count, 1 To .Columns.Count)
End With
If blnLoadData Then dataArray = selectedRange
LoadRangeToArray = dataArray
End Function
To call the function, it's simply:
Code:
XLRecOutput = LoadRangeToArray(XLRecOutput, Range("XLRecOutput"))
Now I've created a class and set up Get/Let properties for the variables instead, but the above function fails with a Compile error on the call - 'Type mismatch: array or user-defined type expected' and I can't get my head around how to resolve it.
I am working with a dynamically declared array. Just wondering if anyone knows of a way to get the dimensions of the array so that I can work with them? e.g. to loop through the array.
View 5 Replies View RelatedI found quite a few posts about this problem, but none of the answers was any use to me. I need to redimension a 2 dimensional array in a Sub. I deleted all the code that is not of interest:
View 3 Replies View RelatedCan I redim an array that is held within an array? I have (for example) 3 worksheets, and from each one I want to load 2 columns into an array. However I also want (I think) those 3 arrays to be contained within one array so that I can step through them easily. The code below will not run, but might better show what I am wanting;
View 2 Replies View RelatedDoes using ReDim to size an array also initialize all array elements to zero by default? If not, is there a quick way to autoinitialize all array elements to zero?
View 2 Replies View RelatedI want to have an array where each record contains a name and three numbers. My understanding is that Excel requires all element types within an array to be the same, and so I turned to a user-defined data type. But I don't seem to be able to create a dynamic array out of this type--when I try to ReDim Preserve it, I get an error saying that it's already defined. Can't I do that?
View 3 Replies View RelatedI have: ReDim X(3,1) as double. The code runs fine on my machine, but when I take it to another machine, the code gets stuck on that line.
View 3 Replies View RelatedIs there a way in excel to say if i select Item1 and it is 100mm x 30mm x 100mm, excel will say this will fit into a compartment called A1 and may also fit into a compartment called B6.
I have a list of all the compartments and what the internal dimensions are. So is it just a matter of saying if these dimensions are within those of the compartment then that item will fit in.
I have a list of some what 6000 Items that have dimensions. I may pick 200 or so of these items to fit into special compartments of a machine. Because of the varying sizes i need to know what compartment each item will fit in so i can build a machine big enough and get the right size compartments.
My macro prduces some text ang a graph on the screen and I can print the result.
Ok so far. But when I run this macro in a different screen resolution, the layout of the page is disturbed: the graph is on the wrong place and the dimensions of the graph are different.
Of course I can drag and resize the graph and include this proces also in the macro but I think this is not the right way. My question is: are in VBA commands which can fix the graph to a location on the sheet/screen and adjust the graph to the requested heighth and width?
I am trying to graph dimension measurements that are automatically added as a new worksheet upon completion of a CMM program. Do I need to move all of my data to one work sheet to be able to graph it or is it possible to call the same cell on multiple sheets? Also is there a way to set the graph up so that it updates the information every time a new sheet is added? I have a sample workbook attached that only list one dimension the actual workbook will have many dimensions listed. Sheet 1 is blank and sheets 2-4 contain the information from the CMM.
View 1 Replies View RelatedI have a worksheet with many dimensions and I would like to have a formula or macro to do the following: I need to check 4 different columns that have dimensions and calculate the best combinations in order to fit within the least amount of 96 inch boards.
I'm a bit uncertain if my named range has turned out the way i want it to.. Is their anyway of finding the dimensions of my namned range, i.e. # of rows and columns?
View 8 Replies View RelatedI am a woodworker. I have a CAD program that gives me a cut list of all the parts I need. I then take this list into Excel and do some stuff with the data.
all the dimensions are in fractional inches where ' is used to designate feet and " designates inches. I use the find and replace command to get rid of the ' and ". if the dimension is just a fraction like 3/4 Excel thinks this is a date and displays march 4th. I have tried formatting the cells to numbers before i do the find replace with no luck.
I am trying to automate the cleaning and compiling of some data, in fact its quite a lot of data, there will be about 200,000 lines over several spreadsheets.
Determine the width of the data on spreadsheet1
Determine the rows with empty cells at the bottom of spreadsheet1
"now that I know the dimensions of this rectangle"
Copy a rectangle (with the same dimensions as the one on sheet1) of data from sheet2
And paste this rectangle into sheet1...
"This is the point of the excercise, I cannot have any gaps in the data (this includes at the end of a spreadsheet) as it needs to be a continous flow from one shreadsheet to another"
This is what I have done so far... I understand if it is laughable, I've only been doing this a couple of days.
Sub HowMuchSpace()
' No. of columns
Dim bWidthOfColumns
Range(Worksheets("Sheet1").Range(":*", ":*").Cells.SpecialCells _(xlCellTypeConstants).Count).Value = bWidthOfColumns
'No. of rows
Dim lNumOfRows
Range("*:*").Value = lNumOfRows
End Sub
I have a lot of carton dimensions that are always presented in the same manner and would like to be able to split the individual dimensions into seperate columns.
The format is always: Length Width Height. Presentation of data is always ???x???x??? or ??x??x??? (ie two or three chrs seperated by the letter X). If the full string is stored in column A I would like B to display Length, C the Width and D the Height. I find it easy to use LEFT for Length but struggling with Width and Height which I'm sure are easy, just can't get my head around it.
I am working now on macros changing the datas in a pivot table created from a OLAP cube. I have there some hierarchic dimensions in the format of Category.Group.Item etc. When creating a macro with recorder i get something like this...
ActiveSheet.PivotTables("cube").PivotFields("[Dim_Item]").CurrentPageName = _
"[Dim_Item].[All Dim_Item].[CategoryA].[GroupA4].[Item550321]"
Is somewhere out there any tutorial to that [All Dim_Item] thing? ... cause i feel there IS what i need, that with some cunning command i could show an item without knowing his group and category, but i cant get the macro working.
I am trying to create a spreadsheet containing a table of dimensions that are multiples of up to six loadable variables. I work for a stainless steel tank manufacturer. The body of tanks are formed from coil stock of varying widths. Typically these might be 1200mm, 1500mm, 2000mm and possibly 1800mm as well as the imperial equivalents. This could mean up to eight variables but in reality all are unlikely at any one given time.
We are told the volume that the tank is required to contain and a target preferred diameter. The theoretical height is therefore derived from this information. But now comes the tricky bit. It is desirable, to minimise cost of welding by minimising the number of strakes or wrappers. Can anyone give me a formula or whatever that can be used to do this and hopefully generate a table of close heights up to say 40 meters. Thus allowing an operator to select from say five presented options.
I have a table in a spreadsheet that the three principal widths of 1200mm 1500mm and 2000mm generate. It was created for me a while ago by a gentleman working at the Amsterdam Museum that I’m happy to send for perusal. The trouble is he never told me how he did it and no matter how hard I try, I cannot discover the method or formula. The first column gives the total combined height, the second the number of 1200mm wrappers, the third the number of 1500mm and the last the number of 2000mm. It is that simple
In my business I deal with a ton of different dimensions for my products. A lot of times the dimension will be within the cell as follows, "Product A 17x27 Brown", is in a single cell.
Is it even possible to write a code or formula that will find the "17x27" in the description, recognize it as a "dimension" and then run the formula that I need which is
I have a worksheet that contains a number of ActiveX image controls, which have been scaled to a uniform height to serve as thumbnails.
I have also created a class, where each instance is initialized with one of these image controls, and events (specifically the on click event) are captured. When the user clicks the picture, it opens a userform containg the same picture. However, I'd like that picture to be at its original size, not the scaled-down size.
how can I determine the original dimensions of a picture used in an image control? I can tell that the original resolution is there (by changing the PictureSizeMode to clip), but I can't find any properties that show me how big that image actually is, only ones that return or set the size of the object itself.
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.
I need to export this to Xcelsius which doesn't support any macros/vba. Btw I can;'t use Row() in xcelsius too.
[Code].....
I have a class module with several private variables, including one that is an array of a user-defined type. I am trying to set the values of a single element of this array with "Property Let ..." from a string array:
View 4 Replies View RelatedSay I have 3 columns of data: A1:C10 and I want to run a Match() function on them all together to see if I get a match any one those cells, say the value of have in X1.
Since, Match only allows a One-Column lookup array.. is there a way to "concatenate" or "append" the 3 columns together within a formula so now I would be looking to Match in an array that is 1 column * 30 rows?
Basically want to convert =Match(X1,A1:C10,0) to =Match(X1,A1:A30,0) without moving around the raw data in the sheet.
And I want to avoid doing an AND or OR formula that uses 3 separate MATCH() for each column.
I have a hunch that the MMULT or MMULT/TRANSPOSE functions are involved, but can't seem to get it right.
I'm only starting to get to grips with arrays. I have what I consider to be a lot of data that I need to 'cut' into separate workbooks. I have written some code that does this by simply looping through each line, 250k+, checking against a variable and copying the row into a separate sheet. This took longer than it would have doing it manually. It was suggested to me that I use arrays to speed up the process. I have managed to store the test data into an array but am struggling to find a way to loop through and pull out an entire 'row' from the array based on a variable. I have looked for 2 days in various places to find some way to loop through the data held in the array, but to no avail.
That code will appear here from about 8am GMT tomorrow. I know that once I've cracked this I'm on the road to some very significant time saving and comprehensive report writing.
I want to pass an array to Offset in the "Height" parameter, without having to type the array.
{=MAX(SUBTOTAL(9,(OFFSET(A1,ROW(1:5),,{1,2,3,4,5}))))}
I can't seem to figure out how to build the {1,2,3,4,5}. I've tried another ROW(1:5) and have tried nesting that like N(ROW(1:5)) but nothing works.
How I can get the {1,2,3,4,5} without having to type it out (so that I can expand this to a larger list)??
I am trying to filter an array (the longer one) using the shorter array as the criteria. I am currently doing this using the following method
IF(LOOKUP(lookup cell, array)=lookupcell, lookupcell, "FALSE")
I then copy and paste 'values' and filter out the 'false' to get my final result.
This has worked in the past, but for some reason that I simply can't figure out, the formula isnt working! I've attached the example, and I've highlighted a number in blue (cell E522 and C103), (that should be being found in the 'LOOKUP' function) but is returning a "FALSE". I have looked over the code and simply can't figure out why Excel isn't returning the right value.
This is obviously happening for a quite a few of my numbers, as my filter result is returning an array that is about 1500 shorter than it should be. I have highlighted E522 as the 'example cell' to look at.