Notifications
Clear all

Atribuir conteúdo de um vetor a propriedade cell.name

5 Posts
3 Usuários
0 Reactions
889 Visualizações
(@rangels)
Posts: 3
New Member
Topic starter
 

Prezados, Uma boa tarde.

Sou novato em VBA e obtive um erro estranho ao atribuir o contéudo de um vetor para modificação do nome da célula. Conheço lógica de programação e já programei a alguns anos atrás em C (Básico) e clipper.

A pergunta que me vem é a seguinte. Porque o excel apresenta o erro ("erro em tempo de execução 1004) A sintaxe desse nome não está correta.

O problema está quando tento atribuir o conteúdo do vetor (ele está cheio) através do índice ao nome da célula. Se no lugar da variável "Cont" eu colocar um número funciona.
Mas ao colocar o índice não. Minha idéia e ter nomes de campos em uma planilha que são nomeados com essa rotina.
"Cells(14, 1 + Cont).Name = NomeCamp(Cont)"

Caso alguém tenha alguma noção sobre esse tema eu ficaria grato, pois já quebrei a cabeça alguns dias e nada. Não sei se por falta de conhecimento do funcionamento das propriedades ou outra questão.

Desde já agradeço a paciência.

Obrigado!

Código que está no meu módulo. (Apenas o pedaço que dá erro)

Worksheets("Sheet3").Activate
Range("A14").Activate
    


For Cont = 0 To 8
  
    
    '--------------------------------------
    'ActiveCell.Offset(0, 1).Activate
    'ActiveCell.Name = NomeCamp(1)
    '--------------------------------------
    
    '----------------------
     ActiveSheet.Range(Cells(14, 1 + Cont), Cells(14, 1 + Cont)).Activate
    'ActiveSheet.Range(Range(Cells(14, 1 + Cont), Cells(14, 1 + Cont)).Address).Name = NomeCamp(1)
    '----------------------
   
     Cells(14, 1 + Cont).Name = NomeCamp(Cont)

     MsgBox Cont
        
     
        Debug.Print NomeCamp(Cont)
       

Next
 
Postado : 02/09/2017 12:36 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

rangels,

Boa tarde!

Não dá para examinar somente com pedaços de códigos!! É necessário você anexar seu arquivo aqui no fórum, compactado com .ZIP. Será necessário rodar, depurar e ver onde o erro ocorre. Também é necessário examinar outras coisas, como declaração de variáveis, etc. etc. e etc.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 02/09/2017 1:42 pm
(@rangels)
Posts: 3
New Member
Topic starter
 

Entendi.

Bom copiei o código para postar abaixo. È Desta forma que o código está.

Alguém teria alguma idéia do que deve ser feito?

Public Sub Aplicar_Valores1()


' Variaveis que pegam os dados da Linha Inicial e Final
Dim Lin_Inic, Lin_Fin As Integer

Dim NomeCamp(8) As String
Dim Cont As Single
Dim Nome As String


' Declaração das Variáveis que recebem o Valor a ser alocado do fundo
Dim Fundo1_Alocado As Currency, Fundo2_Alocado, Fundo3_Alocado, Fundo4_Alocado As Currency

Dim Fundo1_Data As Date, Fundo2_Data As Date, Fundo3_Data As Date, Fundo4_Data As Date

'Declaração das variáveis que recebem o nome do Fundo
Dim Fundo1_Nome, Fundo2_Nome, Fundo3_Nome, Fundo4_Nome As String

' Variável que recebe o Valor selecionado na Msgbox
Dim Resp As Integer



'Insere nomes dos campos no vetor
'Prototipo dos nomes do campos da tabela
NomeCamp(0) = "Fundo"
NomeCamp(1) = "Alocação %"
NomeCamp(2) = "Val_Alocar"
NomeCamp(3) = "Data_Aplicação"
NomeCamp(4) = "Val_Alocado"
NomeCamp(5) = "Rendimento_Br"
NomeCamp(6) = "Montante_Br"
NomeCamp(7) = "IR_Lucro"
NomeCamp(8) = "Montante_Liq"


' Desabilita a atualização de tela
' ao rodar os comandos
' deixa a execução mais rápida
Application.ScreenUpdating = True


Worksheets("Sheet3").Activate

Range("A14").Activate
    


For Cont = 0 To 8
   
    
    '--------------------------------------
    'ActiveCell.Offset(0, 1).Activate
    'ActiveCell.Name = NomeCamp(1)
    '--------------------------------------
    
    '----------------------
     ActiveSheet.Range(Cells(14, 1 + Cont), Cells(14, 1 + Cont)).Activate
    'ActiveSheet.Range(Range(Cells(14, 1 + Cont), Cells(14, 1 + Cont)).Address).Name = NomeCamp(1)
    '----------------------
   
     
     Cells(14, Cont + 1).Name = NomeCamp(Cont)

     MsgBox Cont
       
       
    ' Range(Cells(14, 1 + Cont), Cells(14, 1 + Cont)).Name = NomeCamp(Cont)
           
     
    'If ActiveCell.Value <> Empty Then
      
        Debug.Print NomeCamp(Cont)
        'ActiveCell.Offset(0, 1).Name = NomeCamp(1)
        'ActiveCell.Name = NomeCamp(Cont + 1)
        
                     
    'End If

        

Next

End sub
 
Postado : 04/09/2017 6:58 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A mensagem é referente ao nome atribuído em "NomeCamp(1) = "Alocação %"", o excel não aceita caracteres especiais em vetores e em algumas outras situações, elimine o simbolo de "porcentagem" e tambem não utilize "espaço".
Faça o teste e veja se é isto.

Tem de ficar assim :
NomeCamp(1) = "Alocação"

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/09/2017 6:20 am
(@rangels)
Posts: 3
New Member
Topic starter
 

Putz, Pqp...

Jamais imaginaria uma situação dessa. Perguntei pois estava desconfiado de ser uma "limitação técnica" que só alguém que viu algo parecido descobriria. Já programei em outras linguagens e não lembro de algo desse tipo. Deve haver. Enfim,

Fico muito agradecido, Mauro. Foi de extrema valia seu post. Estou estudando VBA, e vou melhorar meu código. Esse pequeno começo era só um teste em que fiquei enroscado, sem saber o porquê. Realmente deve-se evitar alguns caracteres em variáveis pra evitar essa porquera.

Testei e foi que nem água.

Desejo a todos , uma boa sorte aqui no fórum.

Abc.

 
Postado : 05/09/2017 12:31 pm