Macro do Excel para criar um nome de usuário com 8 caracteres

2

Estou tentando usar uma macro VBA do Excel para criar um nome de usuário de oito caracteres e o que eu criei falhará. Se inserido em uma célula, as fórmulas parecem funcionar. Na minha planilha, tenho o sobrenome em B6, Nome em C6 e inicial do meio em D6. Os resultados vão em G6. Se o sobrenome e o tamanho do primeiro nome forem < 8, a inicial do meio será incluída no nome do usuário. Aqui está o que eu tenho:

Sub Macro1()

' Macro1 Macro

Range("G6").Select

If Len(B6) >= 7 Then
    ActiveCell.FormulaR1C1 = "=LOWER(CONCATENATE(LEFT(RC[-5],7),LEFT(RC[-4],1))"
Else
'    ActiveCell.FormulaR1C1 = "=LOWER((LEFT(RC[-5],7)&LEFT(RC[-4],(8-LEN(RC[-5])))))"

End If

End Sub

Ainda não resolvi adicionar a inicial do meio a uma senha curta. Isso é secundário para o resto.

    
por Rich 08.04.2016 / 08:10

1 resposta

3

Pessoalmente, eu criaria uma função definida pelo usuário para isso, assim você não precisa de um sub para gerar uma função de planilha

Para isso, basta digitar G6 =username(C6,D6,G6) . O benefício adicional é a maior legibilidade do código para manutenção e a leitura imediata dos seus valores na macro, sem precisar referenciar nenhuma célula.

Public Function UserName(ByVal firstName As String, ByVal lastName As String, ByVal middleInitial As String) As String
    Dim result As String
    If Len(firstName) + Len(lastName) >= 8 Then
        result = firstName & lastName
    Else: result = firstName & middleInitial & lastName
    End If

    If Len(result) > 8 Then result = Left(result, 8)

    UserName = result
End Function

Isso também pode ser reutilizado facilmente para outras funções semelhantes, porque é fácil de ler.

Você pode usar o mesmo tipo de código se quiser mantê-lo como um sub apenas Dim ing as variáveis e defini-las para suas respectivas células.

Uma observação importante sobre a lógica dessa função - em sua tentativa, você não considera a possibilidade de que uma primeira + média + última seja menor que 8, então não sei o que você gostaria de fazer com essa . Talvez o seu máximo seja 8, então não importa se é 5 - mas se isso acontecer, adicione alguma lógica ao adicionar caracteres. Além disso, se isso estiver gerando nomes de usuário, você provavelmente desejará verificá-lo em relação a nomes de usuários existentes e ajustar para duplicatas.

    
por 08.04.2016 / 09:38