Declare A Const Array Of String Type In VBA
Jul 28, 2006How do I declare a const array of string type in VBA? for example I want to say
Const myStringArray(4) as String = string1, string2, string3, string4
How do I declare a const array of string type in VBA? for example I want to say
Const myStringArray(4) as String = string1, string2, string3, string4
is it possible to declare an array or anyother datatype like the following in VBA?
Dim myArray() As Integer
myArray("A") = 0
myArray("Test") = 0
myArray("G") = 0
after checking some conditions i need to change the corresponding values too, like the following,
If mycondition = True Then
myArray("Test") = 1
End If
I have some code that I am using to import the source code of multiple websites, or at least that is the end goal. I currently can make it import one website but i can't find a way to change the website as i loop the line i need to change is this
*The website link won't work, it is a log in only site, but i think there should be an easy fix but since i am only self taught i don't think i understand the basics behind why thimngs work
I am running into the error, "Procedure too large". I know I need to break the range down into Arrays, so how can I hard code the values into an array? I cannot find an example to follow. Ranges: D:E,K:L,O:P,....etc. I know I can break the rows up into an array too, but one thing at a time. Here is an example of the range for D:E.
View 2 Replies View RelatedI have a column a1:A150 which includes some Data. I now want to declare these data as an array.
Afterwards I want from cell b50 to copy int the value from cell a1 and copying the next value from the array (cell a2) into cell b51 and so on until cell b200.
I want to do it by creating an array and not just by usual Excel formulas.
I need to create an array with a variable as it size For instance:
View 2 Replies View RelatedI need to declare a two dimensional array that will return the Row and the cell's string value. My only solution is to return the row as a string like this.
Public GlobalArray(2, 100) As String
How to get more control than this? Maybe I should just declare it as a variant but this might open it up for problems later.
I am trying to do a sort of index match thing using VBA. What I am attempting to do is to use the prefix of a long number and try to find that exact prefix in a string array, and output that string array value. So this is what I have so far as a test:
[Code].....
So I can match the text exactly so if I put PREFIXB in cell A1 in this example, i will get the msg box saying "YES", but if I make it PREFIXB1231k4j3jj1kj32cj, it will display "NO". I want to get it so that PREFIXB will be displayed in the cell that I put the formula in. So if A1 = "PREFIX1AAA100CF" and cell B1 = "=ABC(A1)", cell B1 will display "PREFIX1AAA".
Now the thing is that these prefixes can have different lengths, but will never encompass the exact prefix of another. So if I had a prefix of: PRE1AB, I won't have a prefix of PRE1A.
where I can find some documentation or information (exluding the Excel helpfile) about Excel's Array Type? There seems to be an inexplicable lack of information about it!
To be clear, when I say "array type", I mean the data type that the TYPE() worksheet function returns a value of 64 on.
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.
Is this possible?
[Code] .....
I've read somewhere that Enum are limited to a "Long" variable type only? I did test that code I showed above and it really does return a Type Mismatch error so I guess it is true? Just wanted to ask anyway for other solution perhaps if the above is not possible?
What I'm getting at is to just select the constant based on what intellisense present (but of course constant that are of string type) .
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 RelatedI'm trying to set named range as a constant in VBA, to allow me to recall the same range as an output target in different subs, without having to 'set' it in each module. I have tried to declare it at the top of a module like this...
Public Const tpnb_range = Worksheets(" SQL").Range("tpnbs")
and get a "Compile Error : Constant expression required"
This is the first portion of my code. When it reaches x1, it dies... I put in a break... when I highlight that line, it displays:
UBound(myArray1, 1) =
Public Function M_ADD(myArray1, myArray2)
Dim i As Integer, j As Integer
Dim x1 As Long, x2 As Long
Dim y1 As Long, y2 As Long
If VarType(myArray1) >= vbArray Then
x1 = UBound(myArray1, 1) '
I'm trying to use application.match() but I'm running into a issue where I don't know if I'll be matching a string or long data type...
Here's the snippet of code:
Code:
' UNIT DATA
' Set Unit#
s1 = ActiveSheet.Pictures(Application.Caller).Name
iLen = Len(s1)
s1 = Mid(s1, 2, iLen - 2)
' Set Sel Ex Work Date
iCheck = Application.Match("MACHINE_NUMBER", Sheets("Allocation").Columns(1), 0)
[code]....
How can I get application.match to look for strings if s1 = "ABC123" or numbers if s1 = "123456"
I've tried dim variant and s1 + 0... But, haven't come up with a solution.
With the following procedure, I am using a Part ID number to look up that part's location in a worksheet. To do this, I am using the DGET function which now works, thanks to all who helped with those issues.
But now I'm trying to harness the outcomes from that function.
--It displays #VALUE! if the part ID number was not found in my worksheet and therefore the function can't return a location.
--It displays # NUM! if the part ID number was found in multiple records/rows in my worksheet and so it has multiple corresponding locations.
I am trying to construct an IF section that will clarify what these mean to anyone running this macro. I want to replace #VALUE! with "Not Found" and #NUM! with "Numerous".
The issue arises when I compare the result of the function with the #VALUE! or #NUM! strings. I've tried StrComp and a simple equals sign (as below) I've even tried having Option Compare at the top, though I'm not familiar with how that would change things. But I am getting "Type Mismatch Error 13" all the time. I also get that error when set my DGET function = to a variable (Dim'ed as string)
Variables to point out:
---Sheeti is a Publically defined Worksheet
---'CriteriaRange : Publically defined Range that is empty (until assigned criteria for my DGET function later within my loop)
---'InventoryRange : Pubically defined Range that contains inventory data that I look through with my DGET function (Items in the inventory are identifyable by a string I call "sItem" and each has a location in a corresponding column that I am looking for with my DGET function)
Public Sub LoopThruParts()
Dim y As Integer
Dim sItem As String
Dim ValueError As String
Dim NumError As String
I have a big array "DataArray" and want to access it:
For i = 1 To 4
variable = DataArray(SourceArray(i))
Next i
"DataArray" has two dimensions, so SourceArray has to consist of data like this:
SourceArray(1) = 1,2
sourceArray(2) = 2,4
etc
What data type does Sourcearray have to be? Integer doesnt seem to work, and DataArray doesnt like a string as coordinates. I have a workaround with two different arrays of integer for x and y coordinates, but this cannot be it.
My code below returns a type mismatch? It is looking at the values in column B which are formatted as text and the output is in column J. An example of a value is 2.1.15 I want to extract 1 (i.e. the central character between two ".").
VB:
Sub ConvertLineNo()
Dim r As Long, TempStr As String
For r = Cells(Rows.Count, "B").End(xlUp).Row To 1 Step -2
TempStr = Cells(r, "B")
TempStr = Split(TempStr, ".")
Cells(r, "J").Value = TempStr
Next
End Sub
I was looking for a worksheet with vba to do FFT beyond the Excel internal 4096 limit. I wanted to try my hand at writing code to do it faster. The attached does just that.
Everything worked fine until I went beyond 32k samples. The next higher 2^n value for data size to feed the FFT is 65556. When I tried this quantity of samples I got Runtime Error (13) type mismatch when attempting to write the array back to the worksheet using the "transpose" method.If I remember correctly, 32k worked.
Is there some limit to the size of the array that can be transposed and placed into a range? If so, is there another way to do this?
I do not need to re-write the data, but I use this same method elsewhere to write the FFT output. It it fails writing the input data back, it will probably fail when writing the FFT results.
Attached File : FFT.xlsm
I am trying to use FIND and an array formula to find the position of text in a range of cells (A2 and A3 in the example) which could be one of a number of options (C1:D1 here). But the array formula throws up the following error: "A value used in the formula is of the wrong data type". The simplest illustration of the problem is as follows. The formula in B2 is
Code:
{=FIND(($C$1:$D$1),A2)}
and $C$1:$D$1 contain REF and ATM respectively. [/CODE]
REF
ATM
203047 05AUG 08.55 OKEHAMPTON ATM
#VALUE!
CO-OP GROUP 380611 REF 191 7553375222 BCC
22
We see that B2 has a #VALUE! error - wrong data type. But for some reason B3 is ok returning 22!
I have an array of variants..
lvarArrSource = Array(12, "=F", 2, 3, 4, 5, 11, 6, 7, 8, 9, 10, "123", "F", "F", "F", "F", 11, "F", "NR", "F")
which i am using to map columns between spreadsheets. The basic numeric entries refer to columns to copy. But I want to make the routine smarter with the strings.
If array(x) = 12 (For example) Then
Do something
End If
If left(array(x),1) = "=" Then
Do something Else
End If
If array(x) Is String literal (e.g "xyz" Or "123") Then
Do a third thing
End If
i cant find a typeof or isstring kind of function. Isnumeric works ok for some values but quoted numbers (eg "123") return true (which isnt what i want). I have tried the left(string,1) = """ but excel seems to hide the quotes.
I have declared a 'long' variable. however; how do I change the variable data type to string if user input is not a number? how do I recognize the user input's datatype?
View 7 Replies View RelatedI have list of strings to be searched in column A2 to A150 (A1 has column title). The array that needs to be searched is in B2 to AG1000 (B1 to AG1 has column title). I want each string in column A to be searched in the full array. If match is found the corresponding column title (B1 or C1 and so.) and cell address needs to written to a new result columns in AY and AZ. it should work for duplicates as well i.e. the string can be in all the columns of array from B to AG. and all of them needs to be written to result column.
View 9 Replies View RelatedI'm trying to verify if a cellvalue is available in an array. Here is the code:
First I tried to check if the cellval is in the array by returning a -1, 0 or 1:
Code:
If UBound(txt, cellval) = 0 Then
-> returns zero for value "h3", but also for value "3"
(where cellval the value in the cell is)
(with txt being the array containing "h3,r8,ty657", etc)
But I need only the If to be true when there is an exact match.
I have defined array say like this:
Dim myarray (1 to 5, 1 to 2)
Is possible to define something like this?
myarray (x, 1) as string
myarray (x, 2) as integer
x is anything between 1 to 5 .
Say I have a string, "a test array." I want to split this into an array where each character is an element. I was thinking something like
Dim MyArray As Variant
Dim MyString As String
MyString = "a test array"
MyArray = Split(MyString, "", Len(MyString), vbTextCompare)
But this doesn't work because Split() returns the entire string when the delimiter is a zero-length string.
I'm trying to pass an array of UDT from Excel to a C++ dll but I have no idea how. My UDT looks like this
Private Type Student
Age As Integer
Name As String
StudentID As String
End Type
And my dll function declaration..
Declare Function RegisterStudent Lib "SimpleDLL.dll" _
(arr() as Student) As String
.. which will return a unique Id in string
I have a string (PreString) that gets its values from a procedure call (PreResult). The string consists of 4 values for each loop which I then split into the y array.
I then want to transpose the array to the worksheet for sorting.
I don't really get the transpose to work as I want to. I want every 4:th y to be printed on a new row (x). I don't really know how to use the Ubound function to get it right.
Should I make a 2 dimensional array instead ? If so, how is that made ?
Dim x As Integer, z As Integer
Dim var_Status As Integer
Dim var_Week As String
Dim var_HoursPerWeek As Integer
Dim PreString As String
i = var_StartWeekNr
j = var_RangeNumberOfWeeks
z = 0
x = 0
var_Status = 0
var_Week = ""
var_HoursPerWeek = 0
PreString = ""
I want to extract data from array string and then sum the values. For reference attaching the excel.
View 14 Replies View Related