Ir para conteúdo
Fórum Script Brasil
  • 0

O VBA está colocando um sinal de @ após o sinal de =


Fabricio Salviato

Pergunta

Estou testando um código simples em que preencho as 10 primeiras linhas das 10 primeiras colunas de uma planilha com uma sequência de números e tento colocar a fórmula d somatório ao final de cada coluna. Porém o VBA está colocando um @ após o sinal de iguale não consigo tirá-lo. Já tentei colocar como texto, já puxei o caractere ASCII e mesmo assim o @ continua aparecendo. Alguém sabe o motivo? 

Sub teste()

Dim lin, col, aux As Long
Dim Letra As String

aux = 1
' Preenche as 10 primeiras linhas das 10 primeiras colunas com a sequencia de 1 a 100
' Ao final de cada linha eu chamo a função letracoluna que me retorna a letra da coluna e faço o preenchimento da célula
' e a partir dessa letra monto o texto do tipo =soma(A1:A10) por exemplo. Ocorre que se eu tento colocar o caractere = antes
' o VBA coloca o sinal de @ depis do igual

For col = 1 To 10
    For lin = 1 To 10
        ActiveSheet.Cells(lin, col).Value = aux
        aux = aux + 1
    Next lin
    Letra = letracoluna(col)
    Cells(lin, col).Select
    Selection.Formula = "soma(" & Letra & "1:" & Letra & lin-1 & ")"
    ' já tentei assim :Selection.Formula = "=soma(" & Letra & "1:" & Letra & lin-1 & ")"
    ' assim: Selection.Formula = "=" & "soma(" & Letra & "1:" & Letra & lin-1 & ")"
    ' e assim: Selection.Formula = Chr(61) & "soma(" & Letra & "1:" & Letra & lin-1 & ")"
    ' Nas tres formas acima o VBA soloca o @ depois do =
Next col

End Sub

Function letracoluna(ByVal icol As Long) As String

Dim a, b As Long

a = icol
letracoluna = ""
Do While icol > 0
    a = Int((icol - 1) / 26)
    b = (icol - 1) Mod 26
    letracoluna = Chr(b + 65) & letracoluna
    icol = a
Loop
End Function

Editado por Fabricio Salviato
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 1

Boa noite @Fabricio Salviato

Eu testei seu código e fiz a seguinte correção:

Sub teste()

Dim lin, col, aux As Long
Dim Letra As String

aux = 1
' Preenche as 10 primeiras linhas das 10 primeiras colunas com a sequencia de 1 a 100
' Ao final de cada linha eu chamo a função letracoluna que me retorna a letra da coluna e faço o preenchimento da célula
' e a partir dessa letra monto o texto do tipo =soma(A1:A10) por exemplo. Ocorre que se eu tento colocar o caractere = antes
' o VBA coloca o sinal de @ depis do igual

For col = 1 To 10
    For lin = 1 To 10
        ActiveSheet.Cells(lin, col).Value = aux
        aux = aux + 1
    Next lin
    Letra = letracoluna(col)
    Cells(lin, col).Select
    Selection.Formula = "=sum(" & Letra & "1:" & Letra & lin - 1 & ")"
    ' Quando vamos usar formulás usamos os nomes em inglês para o VBA
    ' no caso dessa formula eu substitui o soma por sum
Next col

End Sub

Function letracoluna(ByVal icol As Long) As String

Dim a, b As Long

a = icol
letracoluna = ""
Do While icol > 0
    a = Int((icol - 1) / 26)
    b = (icol - 1) Mod 26
    letracoluna = Chr(b + 65) & letracoluna
    icol = a
Loop
End Function

Segue abaixo o código testado, obs: (a primeira coluna foi antes de fazer a correção)

image.thumb.png.11e875467b98baf4b4208e46fdf514ed.png

Olha se consegue testar ai no seu pc.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...