Академический Документы
Профессиональный Документы
Культура Документы
SwapArrayColumns
TransposeArray
VectorsToArray
Se voc novo matrizes VBA (ou VB), mas tem experincia com
matrizes em outras linguagens de programao (por exemplo,
C), voc vai achar que matrizes VBA trabalhar praticamente o
mesmo. A principal diferena que uma matriz VBA mais do
que apenas uma srie sequencial de bytes. Uma matriz VBA ,
na verdade, uma estrutura chamada uma SEGURA que contm
informaes sobre a matriz incluindo o nmero de dimenses e o
nmero de elementos em cada dimenso. Esta estrutura inclui
uma varivel de ponteiro que aponta para o que os dados reais.
Qualquer operao de matriz em seu cdigo VBA usa as funes
SAFEARRAY API apropriadas. Estes so documentados no
MSDN . Enquanto isto pode adicionar um pouco de sobrecarga
de processamento para o projeto, evita erros comuns que so
freqentes em matrizes padro, como ir alm do fim da matriz.
Uma tentativa de acessar um elemento alm do fim da matriz ir
resultar em um erro de tempo de execuo interceptvel "9 Subscrito fora do intervalo".
Outra diferena significativa entre VB matrizes / VBA e matrizes
convencionais (por exemplo, C), que voc pode especificar
qualquer valor para os limites inferior e superior da matriz.
Elemento 0 no necessita de ser o primeiro elemento na matriz.
Por exemplo, o seguinte cdigo perfeitamente legal (enquanto
o limite inferior menor ou igual ao limite superior - voc
receber um erro do compilador se o limite inferior maior o
limite superior):
Dim N As Long
Dim Arr (-100 a -51) As Long
Debug.Print "LBound:" & CStr (LBound (Arr)), _
"UBound:" & CStr (UBound (Arr)), _
"NumElements:" & CStr (UBound (Arr) - LBound (Arr) + 1)
Para N = LBound (Arr) Para UBound (Arr)
Arr (N) = N * 100
Prximo N
Embora eu nunca ter encontrado a necessidade de usar um
outro limite inferior de 0 ou 1, h circunstncias em que isso
pode ser til, e matriz VB / VBA vai apoi-lo.
A diferena significativa final que se voc no declarar
explicitamente o limite inferior de uma matriz, o limite inferior
ser assumido ser 0 ou 1, dependendo do valor da instruo
Option Base, se presente. Base de Dados de Opo Se no est
"Percorrer a matriz
Outro
"Cdigo de matriz no alocado
Fim se
Descrio das Funes
As descries das funes so as seguintes:
AreDataTypesCompatible
Funo Pblica AreDataTypesCompatible (DestVar As Variant,
SourceVar As Variant) As Boolean
Esta funo analisa duas variveis, DestVar e SourceVar, e
determina se eles so compatveis. As variveis so compatveis
quando ambas as variveis so o mesmo tipo de dados, ou se o
valor em SourceVar pode ser armazenado em DestVar sem
perder preciso ou encontrar um erro de excesso. Por exemplo,
um nmero inteiro de origem compatvel com um Dest tempo
porque um nmero inteiro pode ser armazenado em uma
varivel de tempo sem perda de preciso ou de transbordo. Um
casal de origem no compatvel com uma Dest longo porque o
casal iria perder preciso (a parte fracionria do nmero sero
perdidos) e sua converso pode causar um erro de estouro.
ChangeBoundsOfArray
Funo Pblica ChangeBoundsOfArray (InputArr As Variant, _
NewLowerBound As Long, NewUpperBound) As Boolean
Esta funo altera os limites superior e inferior de InputArray. Os
dados existentes na InputArr preservada. InputArr deve ser um
alocado matriz dinmica, single-dimensional. Se o novo tamanho
da matriz (NewUpperBound-NewLowerBound + 1) maior do
que a matriz original, os elementos adicionais no lado direito da
matriz definido como o valor padro do tipo de dados da matriz
(0, vbNullString, Vazio , ou nada). Se o novo tamanho da matriz
menor do que o tamanho da matriz original, a nova matriz ir
conter apenas os valores mais esquerda da matriz original.
Elementos direita so perdidos. Os elementos do array pode
ser simples variveis do tipo (por exemplo, Longs, Cordas),
objetos ou matrizes. Tipo definido pelo usurio no so
permitidos. Um erro ocorrer se InputArr no uma matriz, se
InputArr uma matriz esttica, se InputArr no atribuda, se
NewLowerBound maior do que NewUpperBound, ou se
InputArr no unidimensional. A funo retorna False se ocorreu
um erro, ou True se a operao foi bem sucedida.
CombineTwoDArrays
CombineTwoDArrays Funo Pblica (arr1 As Variant, _
Arr2 As Variant) As Variant
Esta funo combina duas matrizes 2-dimensional para uma
nica matriz. A funo retorna um Variant que contm uma
matriz que a combinao de arr1 e Arr2. Se ocorrer um erro, o
resultado NULL. Ambas as dimenses de ambos arr1 Arr2 e
deve ter o mesmo LimiteInf - isto , todos os 4 LBounds deve ser
igual. A matriz resultado arr1 com fileiras de adio de anexos
de Arr2. Por exemplo, as matrizes
abeef
cdgh
so combinados para criar uma matriz:
ab
cd
ef
gh
Voc pode aninhar chamadas para CombineTwoDArrays para
concatenar vrias matrizes em uma matriz de singe. Por
exemplo,
V = CombineTwoDArrays (CombineTwoDArrays
(CombineTwoDArrays (A, B), C), D)
CompareArrays
CompareArrays Funo Pblica (Array1 como Variant, array2
As Variant, _
ResultArray As Variant, CompareMode Opcional Como
VbCompareMethod = vbTextCompare) As Boolean
Esta funo compara dois array, Array1 e Matriz2, e preenche
ResultArray com os resultados da comparao de pares de
elementos correspondentes em Matriz1 e Matriz2. Cada
elemento em Array1 se comparar com o elemento
correspondente na Matriz2, e o elemento correspondente na
ResultArray definido como -1 se o elemento em Array1
menor do que o elemento em Matriz2, 0, se os dois elementos
so iguais, e +1 se o elemento em Array1 maior do que o
elemento em Matriz2. Array1 Matriz2 e tm o mesmo LimiteInf e
tm o mesmo nmero de elementos. ResultArray deve ser uma
matriz dinmica de um tipo de dados numricos (normalmente
DataTypeOfArray
Funo Pblica DataTypeOfArray (Arr As Variant) As
VbVarType
Esta funo retorna o tipo de dados (um valor VbVarType) da
matriz especificada. Se a matriz especificada uma matriz
simples,
nica ou multi-dimensional, a funo retorna seu tipo de dados.
A matriz especificada pode ser no alocado. Se a varivel
passado para DataTypeOfArray no um array, a funo retorna
-1. Se a matriz especificada uma matriz de matrizes, o
resultado VBArray. Por exemplo,
V Dim (1 a 5) As String
Dim R Como VbVarType
R = DataTypeOfArray (V) 'retorna vbString = 8
DeleteArrayElement
Funo Pblica DeleteArrayElement (InputArray As Variant,
ElementNumber As Long, _
ResizeDynamic opcional As Boolean = false) As Boolean
Esta funo exclui o elemento especificado da InputArray,
deslocando tudo para a direita do elemento excluda uma
posio para a esquerda. O ltimo elemento da matriz definida
como o valor padro apropriado (0, vbNullString, vazio, ou nada)
dependendo do tipo de dados na matriz. O tipo de dados
determinado pelo ltimo elemento na matriz. Por defeito, o
tamanho da matriz no alterado. Se o parmetro
ResizeDynamic verdadeira e InputArray uma matriz
dinmica, que vai ser redimensionada para baixo por um para
remover o ltimo elemento da matriz. Se a matriz de entrada
possui um elemento, ele apagado.
ExpandArray
Funo ExpandArray (Arr As Variant, WhichDim As Long,
AdditionalElements As Long, _
FillValue As Variant) As Variant
Esta funo expande uma matriz bidimensional em qualquer
dimenso. Ele retorna uma matriz com linhas ou colunas
adicionais. As linhas so adicionados na parte inferior ou a
matriz, e as colunas so adicionados direita da matriz. Arr a
matriz original. Esta matriz no seja modificado de forma
alguma. WhichDim indica se deve acrescentar linhas adicionais
(WhichDim = 1) ou colunas adicionais (WhichDim = 2).
AdditionalElements indica o nmero de linhas ou colunas
getRow
Funo getRow (Arr As Variant, ResultArr As Variant,
RowNumber As Long) As Boolean
Esta funo preenche ResultArr com uma matriz
unidimensional que a linha especificada pelo RowNumber da
matriz de entrada Arr. ResultArr deve ser um
matriz dinmica. O contedo existente de ResultArr so
destrudos.
InsertElementIntoAnArray
Funo Pblica InsertElementIntoArray (InputArray As Variant,
ndice As Long, _
Valor As Variant) As Boolean
Esta funo insere o valor valor no ndice localizao em
InputArray. InputArray deve ser uma matriz dinmica
unidimensional. Ela ser redimensionada para liberar espao
para o novo elemento de dados. Para inserir um elemento no
final da matriz, definir ndice para UBound (Array) +1.
IsArrayAllDefault
Funo Pblica IsArrayAllDefault (InputArray As Variant) As
Boolean
Esta funo retorna verdadeiro ou falso indicando se todos os
elementos do array tm o valor padro para o tipo de dados
particular. Dependendo do tipo de dados da matriz, o valor
padro pode ser vbNullString, 0, vazio, ou nada.
IsArrayAllNumeric
Funo Pblica IsArrayAllNumeric (Arr As Variant, _
AllowNumericStrings opcionais como Boolean = false) As
Boolean
Esta funo retorna verdadeiro ou falso indicando se todos os
elementos na matriz so numricos. Por padro Cordas no so
considerados numrico, mesmo que contenham valores
numricos. Para permitir que cadeias numricas, defina o
parmetro AllowNumericStrings para True.
IsArrayAllocated
IsArrayDynamic
Funo Pblica IsArrayDynamic (ByRef Arr As Variant) As
Boolean
Esta funo retorna verdadeiro ou falso indicando se a matriz
especificada dinmico. Retorna TRUE se a matriz
dinmica, ou FALSE se a matriz esttica. Por exemplo,
Dim DynArray () As Long
Dim StatArray (1 a 3) As Long
Dim B As Boolean
B = IsArrayDynamic (DynArray) 'retorna True
B = IsArrayDynamic (StatArray) 'retorna False
IsArrayEmpty
Funo Pblica IsArrayEmpty (Arr As Variant) As Boolean
Esta funo retorna verdadeiro ou falso indicando se a matriz
especificada est vazio (no alocado). Esta funo
basicamente o oposto da
IsArrayAllocated.
Dim DynArray () As Long
Dim R Como booleana
R = IsArrayEmpty (DynArray) 'retorna true
ReDim V (1 a 10)
R = IsArrayEmpty (DynArray) 'retorna false
IsArrayObjects
IsArrayObjects Funo Pblica (InputArray As Variant, _
AllowNothing opcional As Boolean = true) As Boolean
Esta funo retorna verdadeiro ou falso indicando se a matriz
especificada contm todas as variveis de objeto. Os objectos
podem ser de tipo misto. Por padro, a funo permite que
objetos Nada. Isto , um objeto que no nada ainda
considerado um objeto. Para retornar False se um objeto no
nada, definir o parmetro AllowNothing para Falso.
IsArraySorted
Funo Pblica IsArraySorted (TestArray As Variant, _
Opcional Descendente As Boolean = false) As Variant
Esta funo retorna verdadeiro ou falso indicando se a matriz
TestArray na ordem de classificao (crescente ou
decrescente, dependendo do valor do parmetro Descendente).
Ele ir retornar NULL se ocorreu um erro. TestArray deve ser
uma matriz alocada single-dimensional. Desde a triagem uma
operao cara, especialmente com a grande variedade de
cordas ou variantes, voc pode chamar esta funo para
determinar se a matriz j est classificada antes convidando os
Classificar procedimentos. Se esta funo retorna True, voc
no precisa de recorrer a matriz.
IsNumericDataType
Funo Pblica IsNumericDataType (TestVar As Variant) As
Boolean
Isto indica se a varivel um tipo de dados numricos (Long,
Integer, Double, Singular, moeda, ou Decimal). Se a entrada
uma matriz, que testa o primeiro elemento da matriz (notar que
em uma matriz de variantes, os elementos subsequentes podem
no ser numrico). Para arrays de variveis, use
IsVariantArrayNumeric.
IsVariantArrayConsistent
Funo Pblica IsVariantArrayConsistent (Arr As Variant) As
Boolean
Isso retorna TRUE se todos os tipos de dados em uma matriz de
Varaints todos tm o mesmo tipo de dados. Caso contrrio,
DataT.S = "Test"
'Definir variveis de T volta aos padres.
LSet DataT = DefaultType
Classificao de uma matriz
Veja as matrizes de classificao com QSort pgina.
Classificando um array de objetos
Veja as matrizes de classificao de objetos pgina.
SwapArrayRows e SwapArrayColumns
SwapArrayColumns funo (Arr como Variant, Col1 As Long,
col2 As Long) As Variant
SwapArrayRows funo (Arr como Variant, row1 As Long, row2
As Long) As Variant
Estas funes levar em uma matriz Arr e retornar uma cpia da
matriz com as linhas especificadas ou colunas permutadas.
ResetVariantArrayToDefaults
ResetVariantArrayToDefaults Funo Pblica (InputArray As
Variant) As Boolean
Esta funo repe todos os elementos de uma matriz de
variantes para o valor padro apropriado (0, vbNullString, Vazio,
ou Nada). A matriz pode consistir em vrios tipos de dados
diferentes (por exemplo, alguns Longs, alguns objetos, algumas
cordas, etc) e cada elemento ser redefinido para o valor padro
apropriado.
ReverseArrayInPlace
Funo Pblica ReverseArrayInPlace (InputArray As Variant, _
NoAlerts opcionais como Boolean = false) As Boolean
Esta sub inverte a ordem de uma matriz. Ele faz a inverso no
lugar. Isto , a varivel de matriz no procedimento de chamada
invertida. A matriz de entrada deve ser uma matriz
unidimensional. A funo retorna True se a matriz foi revertido
com sucesso, ou FALSE se um erro ocorreu.
V Dim (1 a 10) As String
Dim B As Boolean
'Load V com alguns valores
B = ReverseArrayInPlace (V)
ReverseArrayOfObjectsInPlace
Funo Pblica ReverseArrayOfObjectsInPlace (InputArray As
Variant, _
NoAlerts opcionais como Boolean = false) As Boolean
Esta sub inverte a ordem de uma matriz. Ele faz a inverso no
lugar. Isto , a varivel de matriz no procedimento de chamada
invertida. A funo retorna verdadeiro ou falso indicando se a
matriz foi revertido com sucesso. Um erro ocorrer se um
elemento de matriz no um objeto (objetos Nada so
permitidos).
V Dim (1 a 10) As Object
Dim B As Boolean
'Load V com alguns objetos
B = ReverseArrayOfObjectsInPlace (V)
SetObjectArrayToNothing
Funo Pblica SetObjectArrayToNothing (InputArray As
Variant) As Boolean
Esta funo define todos os elementos da matriz especificado
para nada. O InputArray deve ser declarado como uma matriz de
objetos, ou um tipo de objeto especfico ou um objeto genrico,
ou como variantes. Um erro ocorre se um elemento na matriz
no um objeto ou Nada. A matriz no redimensionado - ele
permanece o mesmo tamanho. Use esta funo ao invs de
Erase quando se trabalha com matrizes de variantes porque
Erase ir definir cada elemento na matriz para Vazio, no Nada e
o elemento deixar de ser considerado um objeto.
SetVariableToDefault
Public Sub SetVariableToDefault (ByRef varivel como Variant)
Este procedimento define varivel para o valor padro adequado
para seu tipo de dados. Esse valor padro ser 0, vbNullString,
Vazio, ou nada, dependendo do tipo de dados da varivel.
TransposeArray
Funo Pblica TransposeArray (InputArr As Variant, OutputArr
As Variant) As Boolean
Este procedimento transpe uma matriz bidimensional, criando
uma matriz com os resultados com o nmero de linhas igual ao
nmero de colunas da matriz de entrada, e o nmero de colunas
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayAllocated (InputArr) = False Then
ChangeBoundsOfArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Assegurar a NewLowerBound> NewUpperBound.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NewLowerBound> NewUpperBound seguida
ChangeBoundsOfArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr uma nica matriz dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NumberOfArrayDimensions (InputArr) <> 1, ento
ChangeBoundsOfArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Precisamos salvar o status IsObject do primeiro
'Elemento do InputArr para tratar adequadamente
'As variveis vazias que estamos a fazer a matriz
'Maior do que era antes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
FirstIsObject = IsObject (InputArr (LBound (InputArr)))
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Redimensionar TempArr e salvar os valores em
'InputArr em TempArr. TempArr ter
'Um LimiteInf de 1 e um LimiteSup do tamanho
'De (NewUpperBound - NewLowerBound 1)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
ReDim TempArr (1 To (NewUpperBound - NewLowerBound + 1))
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Coloque-se TempArr
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
TempNdx = 0
Para InNdx = LBound (InputArr) Para UBound (InputArr)
TempNdx = + 1 TempNdx
Se TempNdx> UBound (TempArr) Em seguida,
Exit For
Fim se
Se (IsObject (InputArr (InNdx)) = True) Ento
Se InputArr (InNdx) no nada Ento
Definir TempArr (TempNdx) = Nada
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Definir o valor de retorno padro.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
CompareArrays = False
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de que temos um modo de comparar
' valor.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se CompareMode = vbBinaryCompare seguida
Compare = vbBinaryCompare
Outro
Compare = vbTextCompare
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de que temos matrizes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (Array1) = False Then
Funo Exit
Fim se
Se IsArray (Matriz2) = False Then
Funo Exit
Fim se
Se IsArray (ResultArray) = False Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray dinmico
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArrayDynamic (Arr: = ResultArray) = False Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar as matrizes so single-dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Arr: = Array1) <> 1, ento
Funo Exit
Fim se
Se NumberOfArrayDimensions (Arr: = array2) <> 1, ento
Funo Exit
Fim se
Se NumberOfArrayDimensions (Arr: = Array1)> 1 Then 'permitir
que 0 indicando matriz no-alocado
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Assegurar a LBounds so os mesmos
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se LBound (Array1) <> LBound (Matriz2) Em seguida,
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar as matrizes so do mesmo tamanho.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se (UBound (Array1) - LBound (Array1)) <> (UBound (Matriz2) LBound (Matriz2)) Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Redim ResultArray ao numbr de elementos
'Em Array1.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
ReDim ResultArray (LBound (Array1) Para UBound (Array1))
NDX1 = LBound (Array1)
Ndx2 = LBound (Matriz2)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Verificar cada matriz para ver se ele contm objetos
'Ou tipos definidos pelo usurio. Se encontrado, sada com
'False.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para NDX1 = LBound (Array1) Para UBound (Array1)
Se IsObject (Array1 (NDX1)) = True Then
Funo Exit
Fim se
Se VarType (Array1 (NDX1))> = VBArray seguida
Funo Exit
Fim se
Se VarType (Array1 (NDX1)) = vbUserDefinedType seguida
Funo Exit
Fim se
Prximo NDX1
Para NDX1 = LBound (Matriz2) Para UBound (Matriz2)
Se IsObject (Matriz2 (NDX1)) = True Then
Funo Exit
Fim se
Se VarType (Matriz2 (NDX1))> = VBArray seguida
Funo Exit
Fim se
Se VarType (Matriz2 (NDX1)) = vbUserDefinedType seguida
Funo Exit
Fim se
Prximo NDX1
NDX1 = LBound (Array1)
Ndx2 = NDX1
ResNdx = LBound (ResultArray)
Feito = False
Do Until Feito = True
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Loop at chegar ao final do
'Da matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsNumeric (Array1 (NDX1)) = True E IsNumeric (Matriz2
(Ndx2)) Then
D1 = CDbl (Array1 (NDX1))
D2 = CDbl (Matriz2 (Ndx2))
Se D1 = D2 seguida
ResultArray (ResNdx) = 0
ElseIf D1 <D2 seguida
ResultArray (ResNdx) = -1
Outro
ResultArray (ResNdx) = 1
Fim se
Outro
S1 = CStr (Array1 (NDX1))
S2 = CStr (Matriz2 (NDX1))
ResultArray (ResNdx) = StrComp (S1, S2, Compare)
Fim se
ResNdx = + 1 ResNdx
NDX1 = NDX1 + 1
Ndx2 = + 1 Ndx2
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se NDX1 maior do que UBound (Array1)
"Ns batemos o fim das matrizes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NDX1> UBound (Array1) Em seguida,
Feito = True
Fim se
lao
CompareArrays = True
End Function
Boolean
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'ConcatenateArrays
'Esta funo anexa ArrayToAppend ao fim de ResultArray,
aumentando o tamanho do ResultArray
' como necessrio. ResultArray deve ser uma matriz dinmica,
mas no precisa de ser atribudo. ArrayToAppend
'Pode ser esttico ou dinmico, e se dinmica pode ser
unallocted. Se ArrayToAppend
'No atribudo, ResultArray deixado inalterado.
'
"Os tipos de dados de ResultArray e ArrayToAppend deve ser o
mesmo tipo de dados ou
'tipos numricos compatveis. Um tipo numrico compatvel um
tipo que no vai causar uma perda de
'Preciso ou provocar um estouro. Por exemplo, ReturnArray
pode ser Longs, e Amy ArrayToAppend
'Por Longs ou inteiros, mas no simples ou duplas, pois a
informao pode ser perdida quando
'Converso de duas vezes para Long (a parte decimal seriam
perdidos). Para ignorar a compatibilidade
"Verificar e permitir que qualquer tipo de varivel em ResultArray
e ArrayToAppend, defina o NoCompatabilityCheck
'Parmetro para true. Se voc fizer isso, estar ciente de que voc
pode perder preciso e voc pode querer
'Obter um erro de estouro que ir causar um resultado de 0
nesse elemento da ResultArra.
'
'Ambos ReaultArray e ArrayToAppend deve ser matrizes
unidimensionais.
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim VTypeResult Como VbVarType
Dim Ndx As Long
Res Dim As Long
Dim NumElementsToAdd As Long
Dim AppendNdx As Long
Dim VTypeAppend Como VbVarType
Dim ResultLB As Long
Dim ResultUB As Long
Dim ResultWasAllocated As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Definir o resultado padro.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
ConcatenateArrays = False
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (ResultArray) = False Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar ArrayToAppend uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (ArrayToAppend) = False Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de ambas as matrizes so solteiros
'Dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (ResultArray)> 1, ento
Funo Exit
Fim se
Se NumberOfArrayDimensions (ArrayToAppend)> 1, ento
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray dinmico.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArrayDynamic (Arr: = ResultArray) = False Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Garantir ArrayToAppend alocado.
'Se ArrayToAppend no atribuda,
"No temos nada a acrescentar, por isso,
'Exit com um resultado True.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayAllocated (Arr: = ArrayToAppend) = False Then
ConcatenateArrays = True
Funo Exit
Fim se
Se NoCompatabilityCheck = False Then
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Garantir a matriz so compatveis
' tipos de dados.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se AreDataTypesCompatible (DestVar: = ResultArray,
SourceVar: = ArrayToAppend) = False Then
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"As matrizes no so tipos de dados compatveis.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se uma matriz uma matriz de
'Objetos, verifique se o outro contm
'todos os objetos (ou nada)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se VarType (ResultArray) - VBArray = vbObject seguida
Se IsArrayAllocated (ArrayToAppend) = True Then
Para Ndx = LBound (ArrayToAppend) Para UBound
(ArrayToAppend)
Se IsObject (ArrayToAppend (Ndx)) = False Then
Funo Exit
Fim se
Prximo Ndx
Fim se
Fim se
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Obter o nmero de elementos em
'ArrrayToAppend
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
NumElementsToAdd = UBound (ArrayToAppend) - LBound
(ArrayToAppend) + 1
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Obter os limites para redimensionar o
'ResultArray. Se ResultArray alocado
'Usar o LBound e UBound + 1. E se
'ResultArray no atribuda, o uso
'Do LBound de ArrayToAppend para ambos
'Do LBound e UBound de ResultArray.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayAllocated (Arr: = ResultArray) = True Then
ResultLB = LBound (ResultArray)
ResultUB = UBound (ResultArray)
ResultWasAllocated = True
ReDim Preserve ResultArray (ResultLB Para ResultUB +
NumElementsToAdd)
Outro
ResultUB = UBound (ArrayToAppend)
ResultWasAllocated = False
ReDim ResultArray (LBound (ArrayToAppend) Para UBound
(ArrayToAppend))
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Prximo SNdx
Em GoTo erro 0
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se matrizOrigem no atribuda, por isso temos
'Nada a copiar. Sair com um resultado
'True. Deixar DestinationArray intacta.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
CopyArray = True
Funo Exit
Fim se
Outro
Se IsArrayAllocated (Arr: = matrizOrigem) = True Then
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se matriz de destino no atribuda e
'MatrizOrigem alocado, Redim DestinationArray
'Com o mesmo tamanho como matrizOrigem e cpia
"Os elementos de matrizOrigem para DestinationArray.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
On Error Resume Next
ReDim DestinationArray (LBound (matrizOrigem) Para
UBound (matrizOrigem))
Para SNdx = LBound (matrizOrigem) Para UBound
(matrizOrigem)
Se IsObject (matrizOrigem (SNdx)) = True Then
Definir DestinationArray (SNdx) = matrizOrigem (SNdx)
Outro
DestinationArray (SNdx) = matrizOrigem (SNdx)
Fim se
Prximo SNdx
Em GoTo erro 0
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se ambos matrizOrigem e DestinationArray so
'No alocado, no temos nada para copiar (esta condio
'So detectados acima, mas includos aqui
"Para consistancy), assim que sair com um resultado de
True.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
CopyArray = True
Funo Exit
Fim se
Fim se
'' '' '' '' '' '' '' '' '' '' '' '
'Sucesso. Retornar True.
'' '' '' '' '' '' '' '' '' '' '' '
CopyArray = True
End Function
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray no atribudo ou
'Single dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NumberOfArrayDimensions (Arr: = ResultArray)> 1 Em
seguida,
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar os limites e ndices so vlidos.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se FirstElementToCopy <LBound (InputArray) Em seguida,
Funo Exit
Fim se
Se LastElementToCopy> UBound (InputArray) Em seguida,
Funo Exit
Fim se
Se FirstElementToCopy> LastElementToCopy seguida
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Calc o nmero de elementos que vamos copiar
'A partir InputArray para ResultArray.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
NumElementsToCopy = LastElementToCopy FirstElementToCopy + 1
Se IsArrayDynamic (Arr: = ResultArray) = False Then
Se (DestinationElement + NumElementsToCopy - 1)> UBound
(ResultArray) Em seguida,
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'ResultArray esttico e no pode ser redimensionada.
"No h espao suficiente na matriz para
'Copiar todos os dados.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Funo Exit
Fim se
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'ResultArray dinmico e pode ser redimensionada.
'Test se precisamos redimensionar a matriz,
'E redimension-lo, se necessrio.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArrayEmpty (Arr: = ResultArray) = True Then
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'ResultArray no alocado. redimension-la
'A DestinationElement + NumElementsToCopy - 1.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Copiar os elementos de InputArray para ResultArray
"Note-se que no h nenhuma verificao de compatibilidade de
tipo
'Ao copiar os elementos.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
DestNdx = DestinationElement
Para SrcNdx = FirstElementToCopy Para LastElementToCopy
Se IsObject (InputArray (SrcNdx)) = True Then
Definir ResultArray (DestNdx) = InputArray (DestNdx)
Outro
On Error Resume Next
ResultArray (DestNdx) = InputArray (SrcNdx)
Em GoTo erro 0
Fim se
DestNdx = + 1 DestNdx
Prximo SrcNdx
CopyArraySubSetToArray = True
End Function
exibida indicando
' o erro. Para suprimir as caixas de mensagens, defina o
parmetro NoAlerts para
' Verdade.
'
'Esta funo usa os seguintes procedimentos. Eles so
declarados como privada
procedimentos no final deste mdulo.
'IsArrayDynamic
'IsArrayEmpty
'NumberOfArrayDimensions
'
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Dim ResNdx As Long
Dim InNdx As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Definir o valor de retorno padro.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
CopyNonNothingObjectsToArray = False
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar matrizOrigem uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (matrizOrigem) = False Then
Se NoAlerts = False Then
MsgBox "matrizOrigem no uma matriz."
Fim se
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar matrizOrigem um nico
'Matriz dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Seleccione NumberOfArrayDimensions caso (Arr: =
matrizOrigem)
caso 0
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Matriz dinmica no alocado.
' No permitido.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NoAlerts = False Then
MsgBox "matrizOrigem uma matriz no alocado".
Fim se
Funo Exit
Caso 1
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Agregado Single-dimensional.
'Este OK.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Case Else
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Matriz multi-dimensional.
'Isso no permitido.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NoAlerts = False Then
MsgBox "matrizOrigem um array multi-dimensional.
Isso no permitido."
Fim se
Funo Exit
End Select
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (ResultArray) = False Then
Se NoAlerts = False Then
MsgBox "ResultArray no uma matriz."
Fim se
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray uma dinmica.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArrayDynamic (Arr: = ResultArray) = False Then
Se NoAlerts = False Then
MsgBox "ResultArray no uma matriz dinmica."
Fim se
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar ResultArray um nico
'Matriz dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Seleccione NumberOfArrayDimensions caso (Arr: = ResultArray)
caso 0
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Matriz dinmica no alocado.
'Este OK.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Caso 1
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Agregado Single-dimensional.
'Este OK.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Case Else
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Matriz multi-dimensional.
'Isso no permitido.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Fim se
Prximo InNdx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Agora que j copiou toda a
"elementos no nada do matrizOrigem
'To ResultArray, chamamos Redim Preserve
'Para redimensionar a ResultArray ao tamanho
'Realmente utilizados. Teste ResNdx para ver
'Se ns realmente copiados quaisquer elementos.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se ResNdx> LBound (matrizOrigem) Em seguida,
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se ResNdx> LBound (matrizOrigem), em seguida,
'Copiamos pelo menos um elemento de
'MatrizOrigem.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
ReDim Preserve ResultArray (LBound (ResultArray) Para
ResNdx - 1)
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Caso contrrio, ns no copiar todos os elementos
'da matrizOrigem (todos os elementos em matrizOrigem
'No eram nada). Neste caso, Apagar ResultArray.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
apagar ResultArray
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'No ocorreram erros.
'Return true.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
CopyNonNothingObjectsToArray = True
End Function
a VBArray
'Retornar o tipo de dados nativo.
'
'Se Arr uma matriz simples, nica ou mulit'Dimensional, a funo retorna o tipo de dados da matriz. Arr
'Pode ser uma matriz no alocado. Ns ainda pode obter o tipo
de dados de um no alocado
'Array.
'
'Se Arr uma matriz de matrizes, a funo retorna VBArray. para
recuperar
"O tipo de dados de um subarray, passar para a funo de uma
das sub-matrizes. Por exemplo,
'Dim R Como VbVarType
R = DataTypeOfArray (A (LimiteInf (A)))
'
"Este apoio funo de matrizes individuais e multidimensionais.
Isso no
'tipos definidos pelo usurio de apoio. Se Arr uma matriz de
variantes vazias (vbEmpty)
'Ele retorna vbVariant
'
'Retorna -1 se Arr no uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Dim Elemento As Variant
NumDimensions Dim As Long
'Se Arr no uma matriz, o retorno
'VbEmpty e sair.
Se IsArray (Arr) = False Then
DataTypeOfArray = -1
Funo Exit
Fim se
Se IsArrayEmpty (Arr) = True Then
'Se a matriz no alocado, ns ainda pode obter seu tipo de
dados.
'O resultado da VarType de uma matriz VBArray + o VarType
'Dos elementos da matriz (por exemplo, o VarTipo de uma
matriz de longs
' 8195, o qual VBArray vbLong +). Assim, para obter os
dados bsicos
'Tipo de matriz, que subtrair o valor VBArray.
DataTypeOfArray = VarType (Arr) - VBArray
Outro
'Obter o nmero de dimenses da matriz.
NumDimensions = NumberOfArrayDimensions (Arr)
"Elemento varivel definida como primeiro elemento da
primeira dimenso
'Da matriz
Se NumDimensions = 1, ento
Se IsObject (Arr (LBound (Arr))) = True Then
DataTypeOfArray = vbObject
Funo Exit
Fim se
Elemento = Arr (LBound (Arr))
Outro
Se IsObject (Arr (LBound (Arr), 1)) = True Then
DataTypeOfArray = vbObject
Funo Exit
Fim se
Elemento = Arr (LBound (Arr), 1)
Fim se
'Se ns aproveitado uma matriz de matrizes, IsArray (Element)
vontade
' seja verdadeiro. Portanto, voltar VBArray. Se IsArray
(Element) falsa,
"Ns no foram passados um array de arrays, ento
simplesmente devolver o tipo de dados
' Elemento.
Se IsArray (Element) = True Then
DataTypeOfArray = VBArray
Outro
Se VarType (Element) = vbEmpty seguida
DataTypeOfArray = vbVariant
Outro
DataTypeOfArray = VarType (Element)
Fim se
Fim se
Fim se
End Function
Funo Pblica DeleteArrayElement (InputArray As Variant,
ElementNumber As Long, _
ResizeDynamic opcional As Boolean = false) As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'' ''
'DeleteArrayElement
'Esta funo exclui um elemento de InputArray, e desloca
elementos que esto
'Direita do elemento excludo para a esquerda. Se InputArray
uma matriz dinmica, e o
'Parmetro ResizeDynamic True, a matriz ser redimensionada
um elemento menor. De outra forma,
'Mais direita entrada na matriz definido como o valor padro
apropriado para os dados
'Tipo do array (0, vbNullString, Vazio, ou Nada). Se a matriz
seguida,
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Certifique-Index um ndice de elemento vlido.
"Ns permitimos Index para ser igual ao
'LimiteSup + 1 para facilitar a insero
'Um valor no final da matriz. Por exemplo,
'InsertElementIntoArray (Arr, UBound (Arr) 1123)
'Ir inserir 123 na extremidade da matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se (ndice <LBound (InputArray)) ou (ndice> UBound
(InputArray) + 1) Em seguida,
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Redimensionar a matriz
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
ReDim Preserve InputArray (LBound (InputArray) Para UBound
(InputArray) + 1)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Primeiro, vamos definir o ltimo elemento recm-criado
'Da InputArray ao Valor. Isto feito para interceptar
"Um erro 13, incompatibilidade de tipo. Esta ltima entrada
'Sero substitudos quando mudamos elementos
'Para a direita, eo valor ser inserido
'Na Index.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
On Error Resume Next
Err.Clear
InputArray (UBound (InputArray)) = Valor
Se Err.Number <> 0 Then
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Ocorreu um erro, o mais provvel
"Um erro 13, incompatibilidade de tipo.
'ReDim a matriz de volta para seu original
'Tamanho e sair da funo.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
ReDim Preserve InputArray (LBound (InputArray) Para
UBound (InputArray) - 1)
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Shift tudo para a direita.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para Ndx = UBound (InputArray) Para Index + 1 Passo -1
InputArray (Ndx) = InputArray (Ndx - 1)
Prximo Ndx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Valor Inserir na Index
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
InputArray (ndice) = Valor
InsertElementIntoArray = True
End Function
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Teste o tipo de varivel
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Select Case VarType (InputArray)
Caso VBArray + vbVariant
DefaultValue = vazio
Caso VBArray + vbString
DefaultValue = vbNullString
Caso > VBArray
DefaultValue = 0
End Select
Para Ndx = LBound (InputArray) Para UBound (InputArray)
Se IsObject (InputArray (Ndx)) Then
Se no InputArray (Ndx) no nada Ento
Funo Exit
Outro
Fim se
Outro
Se VarType (InputArray (Ndx)) <> vbEmpty seguida
Se InputArray (Ndx) <> DefaultValue seguida
Funo Exit
Fim se
Fim se
Fim se
Prximo Ndx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se ns faz-lo fora do loop,
'A matriz todos os padres.
'Return true.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
IsArrayAllDefault = True
End Function
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Permitir cadeias numricas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsNumeric (Arr (Ndx)) = False Then
IsArrayAllNumeric = false
Funo Exit
Fim se
Outro
IsArrayAllNumeric = false
Funo Exit
Fim se
caso vbVariant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Para variantes, no permitir matrizes e objetos.
'Se o elemento no uma matriz ou um objeto,
'Test se numrico. permitir numrica
'Varaints.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (Arr (Ndx)) = True Then
IsArrayAllNumeric = false
Funo Exit
Fim se
Se IsObject (Arr (Ndx)) = True Then
IsArrayAllNumeric = false
Funo Exit
Fim se
Se IsNumeric (Arr (Ndx)) = False Then
IsArrayAllNumeric = false
Funo Exit
Fim se
Case Else
Qualquer outro tipo de dados devolve Falso
IsArrayAllNumeric = false
Funo Exit
End Select
Prximo Ndx
IsArrayAllNumeric = True
End Function
IsArrayAllocated = False
Fim se
End Function
no acontece
"Distinguir entre matrizes alocados e no alocados. Ele ir
retornar TRUE para ambos
'atribudos e no atribudos matrizes. Este testes de funo se a
matriz tem, na verdade,
'Foram atribudos.
'
'Esta funo realmente o contrrio do IsArrayAllocated.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'
Dim LB As Long
Dim UB As Long
Err.Clear
On Error Resume Next
Se IsArray (Arr) = False Then
'Ns no passado um array, retornar True
IsArrayEmpty = True
Fim se
'Tentativa de obter o UBound da matriz. Se a matriz
'No alocado, ocorrer um erro.
UB = UBound (Arr, 1)
Se (Err.Number <> 0) Then
IsArrayEmpty = True
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Em rara ocasio, em circunstncias I
'No pode replictate de forma confivel, Err.Number
'Vai ser 0 para uma matriz no alocado, vazio.
"Nessas ocasies, LBound 0 e
'UBoung -1.
"Para acomodar o comportamento estranho, teste para
'Ver se LB> UB. Se assim for, a matriz no est
'Alocado.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Err.Clear
LB = LBound (Arr)
Se LB> UB seguida
IsArrayEmpty = True
Outro
IsArrayEmpty = False
Fim se
Fim se
End Function
End Select
Para Ndx = LBound (InputArray) Para UBound (InputArray)
Se IsObject (InputArray (Ndx)) = False Then
Funo Exit
Fim se
Se InputArray (Ndx) no nada Ento
Se AllowNothing = False Then
Funo Exit
Fim se
Fim se
Prximo Ndx
IsArrayObjects = True
End Function
IsNumericDataType = False
Funo Exit
End Select
Outro
Select Case VarType (TestVar) - VBArray
Caso vbCurrency, vbDecimal, vbDouble, vbInteger,
vbLong, vbSingle
IsNumericDataType = True
Funo Exit
Case Else
IsNumericDataType = False
Funo Exit
End Select
Fim se
Fim se
Select Case VarType (TestVar)
Caso vbCurrency, vbDecimal, vbDouble, vbInteger, vbLong,
vbSingle
IsNumericDataType = True
Case Else
IsNumericDataType = False
End Select
End Function
especficos, e no variantes,
"(Por exemplo, Dim V (1 a 3) As Long), a funo retornar True.
E se
'Uma matriz de variantes contm um elemento no inicializado
(VarType =
'VbEmpty) esse elemento ignorado e no utilizado na
comparao. o
'Raciocnio por trs disso que uma varivel vazia retornar o
'Tipo de dados da varivel a qual atribudo (por exemplo, ele
vai
'Voltar vbNullString para um String e 0 a um duplo).
'
'A funo no suporta matrizes de tipos definidos pelo usurio.
'
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim FirstDataType Como VbVarType
Dim Ndx As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Sair com False se Arr no uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (Arr) = False Then
IsVariantArrayConsistent = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Sair com False se Arr no est alocada.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayAllocated (Arr) = False Then
IsVariantArrayConsistent = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Sair com falsas sobre multi-dimensional
matrizes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (RRA) <> 1, ento
IsVariantArrayConsistent = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Test se temos uma matriz de uma especfica
'Digitar ao invs de variantes. Se ento,
'Retornar TRUE e sair.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se (VarType (Arr) <= VBArray) E _
(VarType (Arr) <> vbVariant) Em seguida,
IsVariantArrayConsistent = True
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Obter o tipo de dados do primeiro elemento.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
FirstDataType = VarType (Arr (LBound (Arr)))
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Loop atravs da matriz e de sada se
'Um tipo de dados diferentes, se for encontrado.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para Ndx = LBound (Arr) + 1 Para UBound (Arr)
Se VarType (Arr (Ndx)) <> vbEmpty seguida
Se IsObject (Arr (Ndx)) = True Then
Se no Arr (Ndx) no nada Ento
Se VarType (Arr (Ndx)) <> FirstDataType seguida
IsVariantArrayConsistent = False
Funo Exit
Fim se
Fim se
Outro
Se VarType (Arr (Ndx)) <> FirstDataType seguida
IsVariantArrayConsistent = False
Funo Exit
Fim se
Fim se
Fim se
Prximo Ndx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se ns faz-lo fora do loop,
'Ento a matriz consistente.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
IsVariantArrayConsistent = True
End Function
Se NumDims = 1, ento
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Matriz dimensional nica
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para Ndx = LBound (TestArray) Para UBound (TestArray)
Se IsObject (TestArray (Ndx)) = True Then
IsVariantArrayNumeric = false
Funo Exit
Fim se
Se VarType (TestArray (Ndx)) <> vbEmpty seguida
Se IsNumericDataType (TestVar: = TestArray (Ndx)) =
False Then
IsVariantArrayNumeric = false
Funo Exit
Fim se
Fim se
Prximo Ndx
Outro
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Array multi-dimensional
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para DimNdx = 1 Para NumDims
Para Ndx = LBound (TestArray, DimNdx) Para UBound
(TestArray, DimNdx)
Se VarType (TestArray (Ndx, DimNdx)) <> vbEmpty
seguida
Se IsNumericDataType (TestVar: = TestArray (Ndx,
DimNdx)) = False Then
IsVariantArrayNumeric = false
Funo Exit
Fim se
Fim se
Prximo Ndx
Prximo DimNdx
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se ns fizemo-lo para fora do loop, em seguida,
'A matriz inteiramente numrico.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
IsVariantArrayNumeric = True
End Function
um erro.
'Um erro ocorrer quando Ndx excede o nmero de dimenso
'Na matriz. Voltar Ndx - 1.
Faz
Ndx = + 1 Ndx
Res = UBound (Arr, Ndx)
Loop Until Err.Number <> 0
NumberOfArrayDimensions = Ndx - 1
End Function
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar InputArray um nico
'Matriz alocada dimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NumberOfArrayDimensions (Arr: = InputArray) <> 1 Em
seguida,
Funo Exit
Fim se
Para Ndx = LBound (InputArray) Para UBound (InputArray)
SetVariableToDefault InputArray (Ndx)
Prximo Ndx
ResetVariantArrayToDefaults = True
End Function
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"OK - return true
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
ReverseArrayInPlace = True
End Function
Ndx2 = Ndx2 - 1
Prximo Ndx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"OK - return true
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
ReverseArrayOfObjectsInPlace = True
End Function
Funo Pblica SetObjectArrayToNothing (InputArray As Variant)
As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'SetObjectArrrayToNothing
'Isso define todos os elementos de InputArray a nada. Use esta
funo
'Ao invs de Erase porque se InputArray uma matriz de
variantes, Erase
'Ir definir cada elemento vazio, no Nada, eo elemento cessar
"Ser um objeto.
'
'A funo retorna True se for bem sucedida, False contrrio.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Dim N As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar InputArray uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (InputArray) = False Then
SetObjectArrayToNothing = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de que temos uma matriz unidimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Arr: = InputArray) <> 1 Em
seguida,
SetObjectArrayToNothing = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Assegurar a matriz alocada e que cada
"Elemento um objeto (ou nada). Se o
"Matriz no alocada, retornar True.
"Ns fazemos este teste antes de definir qualquer elemento
'Como Nothing para que no acabar com uma matriz
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Definir o tipo de retorno padro.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
AreDataTypesCompatible = False
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se DestVar um array, obter o
'Tipo de matriz. Se for uma matriz
'Sua VarType VBArray + VarType (elemento)
'Ento ns subtrair VBArray para obter, em seguida,
'Tipo de dados do aray. Por exemplo,
'O VarType de uma matriz de Longs
' = 8195 + VBArray vbLong,
'8195 - VBArray = vbLong (= 3).
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (DestVar) = True Then
DVType = VarType (DestVar) - VBArray
Outro
DVType = VarType (DestVar)
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se SourceVar um array, obter o
'Tipo de matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (SourceVar) = True Then
SVType = VarType (SourceVar) - VBArray
Outro
SVType = VarType (SourceVar)
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se uma varivel um array e
"O outro no um array, eles
"So incompatveis.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
If ((IsArray (DestVar) = True) E (IsArray (SourceVar) = false) Ou _
(IsArray (DestVar) = false) E (IsArray (SourceVar) = True))
Then
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Teste o tipo de dados de DestVar
'E retornar um resultado se SourceVar
' compatvel com o tipo.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se SVType = DVType seguida
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
caso vbString
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbObject
Select Case SVType
caso vbObject
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbBoolean
Select Case SVType
Caso vbBoolean, vbInteger
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbByte
Select Case SVType
caso vbByte
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbCurrency
Select Case SVType
Caso vbInteger, vbLong, vbSingle, vbDouble
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbDecimal
Select Case SVType
Caso vbInteger, vbLong, vbSingle, vbDouble
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbDate
Select Case SVType
Caso vbLong, vbSingle, vbDouble
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbEmpty
Select Case SVType
caso vbVariant
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbError
AreDataTypesCompatible = False
Funo Exit
caso vbNull
AreDataTypesCompatible = False
Funo Exit
caso vbObject
Select Case SVType
caso vbObject
AreDataTypesCompatible = True
Funo Exit
Case Else
AreDataTypesCompatible = False
Funo Exit
End Select
caso vbVariant
AreDataTypesCompatible = True
Funo Exit
End Select
Fim se
End Function
Public Sub SetVariableToDefault (ByRef varivel como Variant)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'SetVariableToDefault
'Este procedimento define varivel para o padro apropriado
"Valor para o seu tipo de dados. Note que no pode alterar UserDefined
'Tipos.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsObject (varivel), ento
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Ns testamos com IsObject para que
'O objeto em si, no o padro
'Propriedade do objeto, avaliada.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Definir varivel = Nothing
Outro
Select Case VarType (Variable)
Caso > = VBArray
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'O VarType de uma matriz
'Igual a VBArray + VarType (ArrayElement).
"Aqui ns verificamos para qualquer coisa> = VBArray
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
apagar varivel
caso vbBoolean
Varivel = False
caso vbByte
Varivel = CByte (0)
caso vbCurrency
Varivel = CCur (0)
caso vbDataObject
Definir varivel = Nothing
caso vbDate
Varivel = CDate (0)
caso vbDecimal
Varivel = CDec (0)
caso vbDouble
Varivel = CDbl (0)
caso vbEmpty
Varivel = vazio
caso vbError
Varivel = vazio
caso vbInteger
Varivel = CInt (0)
caso vbLong
Varivel = CLng (0)
caso vbNull
Varivel = vazio
caso vbObject
Definir varivel = Nothing
caso vbSingle
Varivel = CSng (0)
caso vbString
Varivel = vbNullString
caso vbUserDefinedType
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"User-Defined-tipos no podem ser
'Definido para um valor padro geral.
"Cada elemento tem de ser explicitamente
'Definido para seu valor padro. No
'Atribuio ocorre neste
'Procedimento.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
caso vbVariant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Este caso includo para constistancy,
"Mas ns nunca vai ficar aqui. Se a variante
'Contm dados, VarType retorna o tipo de
'Os dados. Uma variante vazia digitar vbEmpty.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Varivel = vazio
End Select
Fim se
End Sub
Funo Pblica TransposeArray (InputArr As Variant, OutputArr
As Variant) As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'TransposeArray
'Este transpe uma matriz bidimensional. Ele retorna True se for
bem sucedida ou
'False se ocorrer um erro. InputArr deve ser duas dimenses.
Deve ser OutputArr
'Uma matriz dinmica. Ele ser apagada e redimensionada, de
modo que qualquer contedo existente
'Ser destrudo.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim RowNdx As Long
Dim ColNdx As Long
Dim LB1 As Long
Dim LB2 As Long
UB1 Dim As Long
UB2 Dim As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar InputArr e OutputArr
"So matrizes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se (IsArray (InputArr) = false) ou (IsArray (OutputArr) = false) Em
seguida,
TransposeArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Assegurar OutputArr uma dinmica
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArrayDynamic (Arr: = OutputArr) = False Then
TransposeArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar InputArr duas dimenses,
'Nem mais, nem lesss.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Arr: = InputArr) <> 2 Em
seguida,
TransposeArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Obter os limites inferior e superior de
'InputArr.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
LB1 = LBound (InputArr, 1)
LB2 = LBound (InputArr, 2)
UB1 = UBound (InputArr, 1)
UB2 = UBound (InputArr, 2)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Erase e ReDim OutputArr
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
apagar OutputArr
ReDim OutputArr (LB2 Para LB2 + UB2 - LB2, LB1 Para LB1 +
UB1 - LB1)
Para RowNdx = LimiteInf (InputArr, 2) Para LimiteSup (InputArr,
2)
Para ColNdx = LimiteInf (InputArr, 1) Para LimiteSup (InputArr,
1)
OutputArr (RowNdx, ColNdx) = InputArr (ColNdx, RowNdx)
Prximo ColNdx
Prximo RowNdx
TransposeArray = True
End Function
Funo Pblica VectorsToArray (Arr As Variant, ParamArray
Vetores ()) As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'VectorsToArray
'Esta funo tem 1 ou mais matrizes single-dimensionais e
convertidos
"-Los em uma matriz multi-dimensional nica. Cada matriz em
vectores
'Compreende uma linha da nova matriz. O nmero de colunas na
'Nova matriz o valor mximo do nmero de elementos em cada
vector.
'Arr deve ser uma matriz dinmica de um tipo de dados
compatvel com todos os
'elementos em cada vetor. O cdigo no armadilha para um erro
'13 - Tipo incompatvel.
'
'Se os vetores so de diferentes tamanhos, Arr dimensionado
para manter a
'Nmero mximo de elementos em um vetor. O procedimento
Apaga a
'Matriz Arr, ento quando ele realocado com Redim, todos os
elementos sero
'Ser o redefinida para o seu valor padro (0 ou vbNullString ou
vazio).
"Elementos no utilizados na nova matriz continuar a ser o
valor padro para
'Esse tipo de dados.
'
'Cada vetor no vetores deve ser uma nica matriz dimensional,
mas
'Os vetores podem ser de diferentes tamanhos e LBounds.
'
'Cada elemento em cada vetor deve ser um tipo de dados
simples. Os elementos
"Pode no ser objeto, Arrays, ou tipos definidos pelo usurio.
'
'As linhas e colunas da matriz resultante so 0-base,
independentemente da
'Do LBound de cada vector e independentemente da instruo
Option Base.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim Vector As Variant
Dim VectorNdx As Long
NumElements Dim As Long
NumRows Dim As Long
NmColunas Dim As Long
Dim RowNdx As Long
Dim ColNdx As Long
Dim vtype Como VbVarType
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Certifique-se de que temos uma matriz
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (Arr) = False Then
VectorsToArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de que temos uma matriz dinmica
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayDynamic (Arr) = False Then
VectorsToArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Certifique-se de que pelo menos um vector
"Foi aprovada em vetores
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsMissing (vetores) = True Then
VectorsToArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Loop atravs de vetores para determinar a
'Tamanho da matriz resultado. Fazemos isso
'Loop de primeira para evitar ter que fazer
'A Redim Preserve. Isto requer looping
'Na presena de vetores uma segunda vez, mas esta
" ainda mais rpido do que fazendo Redim conservas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para cada vetor nos vetores
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Vector nica
'Matriz dimensional. este
'Vai cuidar do caso
'Se Vector um no alocado
'Array (NumberOfArrayDimensions = 0
"Para uma matriz no alocado).
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Vector) <> 1 Em seguida,
VectorsToArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Verifique se Vector no uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (Vector) = False Then
VectorsToArray = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Incrementar o nmero de linhas.
'Cada vetor uma linha ou a
'Matriz resultado. Testar o tamanho
'Da Vector. Se for maior
'Do que o valor existente de
'NmColunas, conjunto NmColunas ao
'Novo e maior, o valor.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
NumRows = NumRows + 1
Se NmColunas <UBound (Vector) - LBound (Vector) + 1 Em
seguida,
NmColunas = UBound (Vector) - LBound (Vector) + 1
Fim se
Prximo Vector
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Redim Arr para o tamanho apropriado. Arr
' 0 baseada em ambas as direces, independentemente
'Do LBound da Arr original e
"Independentemente das LBounds dos vetores.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
ReDim Arr (0 a NumRows - 1, 0 a NmColunas - 1)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Linha por linha Loop.
Para RowNdx = 0 Para NumRows - 1
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Loop atravs das colunas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para ColNdx = 0 Para NmColunas - 1
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Definir Vector (a Variant) para
'A Vetores (RowNdx) array.
"Declaramos Vector como uma
Variante para que ele possa ter um
"Matriz de quaisquer dados simples
' digitar.
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
Vector = Vetores (RowNdx)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Os vetores no precisa ber
Se ColNdx <UBound (Vector) - LBound (Vector) + 1 Em
seguida,
Vtype = VarType (vetorial (LBound (Vector) + ColNdx))
Se vtype> = VBArray seguida
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Test para vtype> = VBArray. O VarTipo de uma matriz
' VBArray + VarType (elemento do array). Por
exemplo, a
'Elemento da matriz.
'Se TestArray no uma matriz, uma matriz dinmica no
alocado, ou tem mais de
'Uma dimenso, ou o VarTipo de TestArray no compatvel, a
funo
'Retorna null.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim StrCompResultFail As Long
Dim NumericResultFail As Boolean
Dim Ndx As Long
NumCompareResult Dim As Boolean
Dim StrCompResult As Long
Dim IsString As Boolean
Dim vtype Como VbVarType
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar TestArray uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (TestArray) = False Then
IsArraySorted = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de que temos uma matriz dimensional nica.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Arr: = TestArray) <> 1 Em
seguida,
IsArraySorted = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'O cdigo a seguir define os valores de
'Comparao que vai indicar que o
'Matriz no classificado. o resultado de
'StrComp (para cordas) ou "> =" (para
'Numerics) igual ao valor especificado
'Abaixo, sabemos que a matriz
'Indiferenciados.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se Descendente = True Then
StrCompResultFail = -1
NumericResultFail = false
Outro
StrCompResultFail = 1
NumericResultFail = True
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Determinar se vamos fazer uma corda
'Comparao ou uma comparao numrica.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Vtype = VarType (TestArray (LBound (TestArray)))
Select Case vtype
Caso VBArray, vbDataObject, vbEmpty, vbError, vbNull,
vbObject, vbUserDefinedType
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'tipos no suportados. Reutrn nulo.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
IsArraySorted = NULL
Funo Exit
Caso vbString, vbVariant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Compare as string
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
IsString = True
Case Else
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Compare como numrico
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
IsString = False
End Select
Para Ndx = LBound (TestArray) Para UBound (TestArray) - 1
Se IsString = True Then
StrCompResult = StrComp (TestArray (Ndx), TestArray (Ndx
+ 1))
Se StrCompResult = StrCompResultFail seguida
IsArraySorted = False
Funo Exit
Fim se
Outro
NumCompareResult = (TestArray (Ndx)> = TestArray (Ndx +
1))
Se NumCompareResult = NumericResultFail seguida
IsArraySorted = False
Funo Exit
Fim se
Fim se
Prximo Ndx
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Se ns fizemo-lo para fora do
'Loop, em seguida, a matriz
'Na ordem de classificao. Retorna
' Verdade.
'' '' '' '' '' '' '' '' '' '' '' '' '' ''
IsArraySorted = True
End Function
CombineTwoDArrays Funo Pblica (arr1 As Variant, _
Arr2 As Variant) As Variant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'TwoArraysToOneArray
"Isso leva duas matrizes 2-dimensionais, arr1 e ARR2 e
'Retorna uma matriz que combina os dois. O nmero de linhas
'No resultado NumRows (arr1) + NumRows (ARR2). arr1 e
'Arr2 deve ter o mesmo nmero de colunas, e o resultado
'Matriz ter que muitas colunas. Todos os LBounds deve
' ser o mesmo. Por exemplo,
'As seguintes matrizes so legais:
'Dim arr1 (0 a 4, 0 a 10)
'Dim Arr2 (0 a 3, 0 a 10)
'
'As seguintes matrizes so ilegais
'Dim arr1 (0 a 4, 1 a 10)
'Dim Arr2 (0 a 3, 0 a 10)
'
"A matriz resultado retornado arr1 com linhas adicionais
'Anexado da Arr2. Por exemplo, as matrizes
'Ab e ef
'cdgh
' tornar-se
'ab
'cd
'ef
'gh
'
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'limites superiores e inferiores de arr1.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim LBoundRow1 As Long
Dim UBoundRow1 As Long
Dim LBoundCol1 As Long
Dim UBoundCol1 As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'limites superiores e inferiores de Arr2.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim LBoundRow2 As Long
Dim UBoundRow2 As Long
Dim LBoundCol2 As Long
Dim UBoundCol2 As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Limites superior e inferior de Resultado.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Dim LBoundRowResult As Long
Dim UBoundRowResult As Long
Dim LBoundColResult As Long
Dim UBoundColResult As Long
'' '' '' '' '' '' '' '' '
'Variveis ndice
'' '' '' '' '' '' '' '' '
RowNdx1 Dim As Long
Dim ColNdx1 As Long
RowNdx2 Dim As Long
Dim ColNdx2 As Long
Dim RowNdxResult As Long
Dim ColNdxResult As Long
'' '' '' '' '' '' '
'Tamanhos de matriz
'' '' '' '' '' '' '
Dim NumRows1 As Long
Dim NumCols1 As Long
Dim NumRows2 As Long
Dim NumCols2 As Long
Dim NumRowsResult As Long
Dim NumColsResult As Long
Dim feito como booleana
Resultado Dim () As Variant
ResultTrans dim () As Variant
Dim V As Variant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
"Garantir que arr1 e Arr2 so
matrizes.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se (IsArray (arr1) = false) ou (IsArray (Arr2) = false) Em seguida,
CombineTwoDArrays = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de ambas as matrizes so alocados
'arrays bidimensionais.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se (NumberOfArrayDimensions (arr1) <> 2) ou
(NumberOfArrayDimensions (Arr2) <2>) Em seguida,
CombineTwoDArrays = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Certifique-se de que o LBound e UBounds
'Da segunda dimenso a
'Mesmo para ambos arr1 e Arr2.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'' '' '' '' '' '' '' '' '' '' '' '' ''
'Obter os limites existentes.
'' '' '' '' '' '' '' '' '' '' '' '' ''
LBoundRow1 = LBound (arr1, 1)
UBoundRow1 = UBound (arr1, 1)
LBoundCol1 = LBound (arr1, 2)
UBoundCol1 = UBound (arr1, 2)
LBoundRow2 = LBound (Arr2, 1)
UBoundRow2 = UBound (Arr2, 1)
LBoundCol2 = LBound (Arr2, 2)
UBoundCol2 = UBound (Arr2, 2)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Obter o nmero total de linhas para o resultado
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
NumRows1 = UBoundRow1 - LBoundRow1 + 1
NumCols1 = UBoundCol1 - LBoundCol1 + 1
NumRows2 = UBoundRow2 - LBoundRow2 + 1
NumCols2 = UBoundCol2 - LBoundCol2 + 1
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Garantir que o nmero de colunas so iguais.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se NumCols1 <> NumCols2 seguida
CombineTwoDArrays = NULL
Funo Exit
Fim se
NumRowsResult = NumRows1 + NumRows2
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Certifique-se de que todos os LBounds so iguais.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Prximo ColNdx2
Prximo RowNdx2
Se RowNdxResult> = UBound (Resultado, 1) +
(LBoundColResult = 1) Em seguida,
Feito = True
Fim se
'' '' '' '' '' '' '
'End Of loop
'' '' '' '' '' '' '
lao
'' '' '' '' '' '' '' '' '' '' '' '' '
'Retornar o resultado
'' '' '' '' '' '' '' '' '' '' '' '' '
CombineTwoDArrays = Resultado
End Function
Funo ExpandArray (Arr As Variant, WhichDim As Long,
AdditionalElements As Long, _
FillValue As Variant) As Variant
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'ExpandArray
"Isso expande uma matriz bidimensional em qualquer dimenso.
Ele retorna o resultado
'Matriz, se bem sucedido, ou NULL se ocorreu um erro. A matriz
original nunca
'Alterado.
'Paramters:
'-------------------'Arr a matriz para ser expandido.
'
'WhichDim 1 para linhas adicionais ou 2 para
'colunas adicionais.
'
'AdditionalElements o nmero de linhas ou colunas adicionais
' para criar.
'
'FillValue o valor a que os novos elementos da matriz deve ser
'Inicializado.
'
'Voc ninho pode chamadas para Expandir matriz para expandir
tanto o nmero de linhas e
'colunas. Por exemplo,
'
'C = ExpandArray (ExpandArray (Arr: = A, WhichDim: = 1,
AdditionalElements: = 3, FillValue: = "R"), _
'WhichDim: = 2, AdditionalElements: = 4, FillValue: = "C")
'Este primeiro adiciona trs linhas no fundo da matriz, e em
seguida, adiciona quatro
ExpandArray = Arr
Funo Exit
Fim se
NumRows = UBound (Arr, 1) - LBound (Arr, 1) + 1
NmColunas = UBound (Arr, 2) - LBound (Arr, 2) + 1
Se WhichDim = ROWS_ seguida
'' '' '' '' '' '' '' '
'Resultado Redim.
'' '' '' '' '' '' '' '
Resultado ReDim (LBound (Arr, 1) Para UBound (Arr, 1) +
AdditionalElements, LBound (Arr, 2) Para UBound (Arr, 2))
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Transferir matriz Arr de Resultado
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para RowNdx = LBound (Arr, 1) Para UBound (Arr, 1)
Para ColNdx = LBound (Arr, 2) Para UBound (Arr, 2)
O resultado (RowNdx, ColNdx) = Arr (RowNdx, ColNdx)
Prximo ColNdx
Prximo RowNdx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Encher o resto do resultado
'Matriz com FillValue.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para RowNdx = UBound (Arr, 1) + 1 Para UBound (Resultado,
1)
Para ColNdx = LBound (Arr, 2) Para UBound (Arr, 2)
O resultado (RowNdx, ColNdx) = FillValue
Prximo ColNdx
Prximo RowNdx
Outro
'' '' '' '' '' '' '' '
'Resultado Redim.
'' '' '' '' '' '' '' '
Resultado ReDim (LBound (Arr, 1) Para UBound (Arr, 1),
UBound (arr, 2) + AdditionalElements)
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
"Transferir matriz Arr de Resultado
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Para RowNdx = LBound (Arr, 1) Para UBound (Arr, 1)
Para ColNdx = LBound (Arr, 2) Para UBound (Arr, 2)
O resultado (RowNdx, ColNdx) = Arr (RowNdx, ColNdx)
Prximo ColNdx
Prximo RowNdx
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Encher o resto do resultado
'Matriz com FillValue.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para RowNdx = LBound (Arr, 1) Para UBound (Arr, 1)
'' '' '' '' '' '' '' '' '' '' '' '' '
Se IsArray (Arr) = False Then
SwapArrayColumns = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Conjunto de resultados para Arr
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Resultado = Arr
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr bidimensional.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (Arr: = Arr) <> 2, ento
SwapArrayColumns = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar Row1 e Row2 so menos
'Do que ou igual ao nmero de
'linhas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se (Col1> UBound (Arr, 2)) ou (Col2> UBound (Arr, 2)) Then
SwapArrayColumns = NULL
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Se Col1 = Col2, basta devolver o
'Array e sada. Nada para fazer.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Se Col1 = Col2 seguida
SwapArrayColumns = Arr
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'V ReDim para o nmero de colunas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
ReDim V (LBound (Arr, 1) Para UBound (Arr, 1))
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
'Coloque Col2 em V
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Para RowNdx = LBound (Arr, 1) Para UBound (Arr, 1)
V (RowNdx) = Arr (RowNdx, Col1)
Resultado (RowNdx, Col1) = Arr (RowNdx, Col2)
O resultado (RowNdx, Col2) = V (RowNdx)
Prximo RowNdx
SwapArrayColumns = Resultado
End Function
Funo GetColumn (Arr As Variant, ResultArr As Variant,
ColumnNumber As Long) As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'GetColumn
'Esta preenche ResultArr com uma matriz unidimensional que
a
'Coluna especificada de Arr. O contedo existente de ResultArr
so
"Destrudo. ResultArr deve ser uma matriz dinmica.
'Retorna sucesso indicando Verdadeiro ou Falso.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Dim RowNdx As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (Arr) = False Then
GetColumn = false
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr um bidimensional
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (RRA) <> 2, ento
GetColumn = false
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar ResultArr uma dinmica
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArrayDynamic (ResultArr) = False Then
GetColumn = false
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar ColumnNumber inferior a
'Ou igual ao nmero de colunas.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se UBound (Arr, 2) <ColumnNumber seguida
GetColumn = false
Funo Exit
Fim se
Se LBound (Arr, 2)> ColumnNumber seguida
GetColumn = false
Funo Exit
Fim se
apagar ResultArr
ReDim ResultArr (LBound (Arr, 1) Para UBound (Arr, 1))
Para RowNdx = LBound (ResultArr) Para UBound (ResultArr)
ResultArr (RowNdx) = Arr (RowNdx, ColumnNumber)
Prximo RowNdx
GetColumn = True
End Function
Funo getRow (Arr As Variant, ResultArr As Variant,
RowNumber As Long) As Boolean
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'getRow
'Esta preenche ResultArr com uma matriz unidimensional que
a
'Determinada linha da Arr. O contedo existente de ResultArr so
"Destrudo. ResultArr deve ser uma matriz dinmica.
'Retorna sucesso indicando Verdadeiro ou Falso.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Dim ColNdx As Long
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr uma matriz.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se IsArray (Arr) = False Then
GetRow = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Certifique-se de Arr um bidimensional
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se NumberOfArrayDimensions (RRA) <> 2, ento
GetRow = False
Funo Exit
Fim se
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'Assegurar ResultArr uma dinmica
'Array.
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''