- 14 Dez 2019 às 16:31
#51129
Tudo bom, pessoal? Estou me aventurando a aprender VBA, Eu estava estudando como gerar um arranjo de valores distribuídos em colunas em que os valores não repetissem, achei umas vídeo aulas, li um pouco e comecei a entender, conseguir gera um arranjo para uma linha e diversas colunas, então pensei, beleza, e agora eu quero 3 linhas de arranjos, mas o mas o valor em determinada linha e coluna, não pode ser igual ao que está imediatamente acima
Por exemplo, se na linha 1 e coluna 2 eu tenho o Valor 4, então na linha 2 coluna 2 eu não posso ter o valor 4. Tentei usar If,mas sem sucesso, algumas vezes ele gera linhas faltando valores, e às vezes até os valores que não deveriam repetir, repetem.
Esse é o código que estou usando.
Por exemplo, se na linha 1 e coluna 2 eu tenho o Valor 4, então na linha 2 coluna 2 eu não posso ter o valor 4. Tentei usar If,mas sem sucesso, algumas vezes ele gera linhas faltando valores, e às vezes até os valores que não deveriam repetir, repetem.
Esse é o código que estou usando.
Código: Selecionar todos
Option Base 1
Sub FabioJunior()
Dim qtd As Integer
Dim clc1 As Collection
Dim clc2 As Collection
Dim clc3 As Collection
Dim n1 As Long
Dim n2 As Long
Dim n3 As Long
qtd = InputBox("Informe a quantidade de elementos")
ReDim garcom(qtd)
Set clc1 = New Collection
Set clc2 = New Collection
Set clc3 = New Collection
Randomize Timer
On Error Resume Next
Do
n1 = WorksheetFunction.RandBetween(1, qtd)
clc1.Add n1, CStr(n1)
n2 = WorksheetFunction.RandBetween(1, qtd)
If n2 = n1 Then
Do
n2 = WorksheetFunction.RandBetween(1, qtd)
Loop Until n2 <> n1
End If
clc2.Add n2, CStr(n2)
n3 = WorksheetFunction.RandBetween(1, qtd)
If n3 = n2 Then
Do
n3 = WorksheetFunction.RandBetween(1, qtd)
Loop Until n3 <> n2
End If
clc3.Add n3, CStr(n3)
Loop Until clc1.Count = qtd
For n1 = 1 To qtd
Cells(2, 3 + n1) = clc1(n1)
Next n1
For n2 = 1 To qtd
Cells(3, 3 + n2) = clc2(n2)
Next n2
For n3 = 1 To qtd
Cells(4, 3 + n3) = clc3(n3)
Next n3
On Error GoTo 0
End Sub