Na coluna B gerar cinco caracteres aleatórios.
Enviado: 20 Out 2021 às 14:16
Boa tarde!
Solicito a sua ajuda, conforme o arquivo anexo.
Grato - Geneci.
Solicito a sua ajuda, conforme o arquivo anexo.
Grato - Geneci.
Fórum de Dúvidas sobre Excel e Power BI
https://gurudoexcel.com/
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N1 As Long, N2 As Long, L1 As String, L2 As String, L3 As String
If Target.Column <> 2 Then Exit Sub
Randomize
L1 = Chr(Int((26 * Rnd) + 1) + 64): L2 = Chr(Int((26 * Rnd) + 1) + 64)
Do Until L1 <> L2
L2 = Chr(Int((26 * Rnd) + 1) + 64)
Loop
L3 = Chr(Int((26 * Rnd) + 1) + 64)
Do Until L3 <> L1 And L3 <> L2
L3 = Chr(Int((26 * Rnd) + 1) + 64)
Loop
N1 = Int(9 * Rnd): N2 = Int(9 * Rnd)
Do Until N1 <> N2
N2 = Int(9 * Rnd)
Loop
Target.Value = N1 & N2 & L1 & L2 & L3
End Sub
GENECI escreveu: ↑21 Out 2021 às 14:43 Não mencionei, porém é bem pertinente,há possibilidade de intercalar letras e números e uma letra em minúscula.
O código que passei faz exatamente o que você escreveu na planilha ~~~> "inserir 5 caracteres aleatórios composto de 2 números 3 letras".
Exemplo.
Ab587
8F57b
S8a75
Esses exemplos que você colocou aí acima não batem com o que você pediu, pois você pediu 2 números (o correto é 2 dígitos) e 3 letras, no entanto os seus exemplos mostram 3 dígitos e 2 letras![]()
![]()
Explicando com outras palavras, um código aleatório, de 5 caracteres embaralhados, entre números letras maiúsculas e minúsculas e sem ordem definida.
O código abaixo gera strings com 5 caracteres, formados por 2 dígitos, duas maiúsculas e uma minúscula, em ordem aleatória.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N1 As Long, N2 As Long, L1 As String, L2 As String, L3 As String
Dim Si As String, Sf As String, k As Long, x As Long, G As String
If Target.Column <> 2 Then Exit Sub
Randomize
L1 = Chr(Int((26 * Rnd) + 1) + 64): L2 = Chr(Int((26 * Rnd) + 1) + 96)
Do Until L1 <> UCase(L2)
L2 = Chr(Int((26 * Rnd) + 1) + 96)
Loop
L3 = Chr(Int((26 * Rnd) + 1) + 64)
Do Until L3 <> L1 And L3 <> UCase(L2)
L3 = Chr(Int((26 * Rnd) + 1) + 64)
Loop
N1 = Int(9 * Rnd): N2 = Int(9 * Rnd)
Do Until N1 <> N2
N2 = Int(9 * Rnd)
Loop
Sf = L1 & "," & N1 & "," & L2 & "," & N2 & "," & L3
For x = 1 To 5
k = Int(5 * Rnd) + 1
If Si = "" Then
Si = k
Else
If InStr(Si, k) = 0 Then
Si = Si & "," & k
Else
Do Until InStr(Si, k) = 0
k = Int(5 * Rnd) + 1
Loop
Si = Si & "," & k
End If
End If
Next x
For x = 0 To 4
k = Split(Si, ",")(x)
G = G & Split(Sf, ",")(k - 1)
Next x
Target.Value = G
End Sub