Notifications
Clear all

Dificuldade com Macro Simples

18 Posts
3 Usuários
0 Reactions
3,290 Visualizações
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

Pessoal, podem em ajudar?

Por que esta macro, além de dar erro 100, está super lenta?

Sub AtualizarDDE()
Dim Ativo As String
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Linha = 3

Do While Ativo <> 0
Ativo = Worksheets("Parameters").Cells(Linha, 1).Value
Worksheets("Parameters").Cells(Linha, 2).Value = "=TZ|" + Ativo + ".abe"
Worksheets("Parameters").Cells(Linha, 3).Value = "=TZ|" + Ativo + ".max"
Worksheets("Parameters").Cells(Linha, 4).Value = "=TZ|" + Ativo + ".min"
Worksheets("Parameters").Cells(Linha, 5).Value = "=TZ|" + Ativo + ".ult"
Worksheets("Parameters").Cells(Linha, 6).Value = "=TZ|" + Ativo + ".qtt"
Worksheets("Parameters").Cells(Linha, 7).Value = "=TZ|" + Ativo + ".neg"
Worksheets("Parameters").Cells(Linha, 8).Value = "=TZ|" + Ativo + ".fec"
Worksheets("Parameters").Cells(Linha, 9).Value = "=TZ|" + Ativo + ".var"
Linha = Linha + 1
Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

 
Postado : 20/01/2015 7:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Erro 100 ??

Cara poste seu arquivo modelo, tem como?

Att

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

 
Postado : 20/01/2015 7:59 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia,

Como não tenho nada para testar aqui, enta isso:

Sub AtualizarDDE()
Dim i           As Long
Dim Ativo       As String
Dim wsParam     As Worksheet
Dim Extencao()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False

Extencao = Array(".abe", ".max", ".min", ".ult", ".qtt", ".neg", ".fec", ".var")
Set wsParam = ThisWorkbook.Worksheets("Parameters")
Linha = 3

    Do While Ativo <> 0
        Ativo = wsParam.Cells(Linha, 1).Value
        For i = 2 To 9
            wsParam.Cells(Linha, i).Value = "=TZ|" + Ativo + Extencao(i - 1)
        Next i
        Linha = Linha + 1
    Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Qualquer coisa da o grito.
Abraço

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

 
Postado : 20/01/2015 8:06 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

Pessoal agradeço antecipadamente mas não deu certo ainda!

Vejam:

http://www.4shared.com/file/cFzrfaZXba/forum.html

 
Postado : 20/01/2015 8:12 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi muito bem porque não conheço a finalidade da planilha, mas funcionou:

Sub AtualizarDDE()
Dim i           As Long
Dim Linha       As Long
Dim Ativo       As Variant
Dim wsParam     As Worksheet
Dim Extencao()  As Variant

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False

Linha = 3
Set wsParam = ThisWorkbook.Worksheets("Parameters")
Ativo = wsParam.Cells(Linha, 1).Value
Extencao = Array(".abe", ".max", ".min", ".ult", ".qtt", ".neg", ".fec", ".var")

    Do While Ativo <> 0
        Ativo = wsParam.Cells(Linha, 1).Value
        For i = 2 To 9
            wsParam.Cells(Linha, i).Value = "TZ|" & Ativo & Extencao(i - 2)
        Next i
        Linha = Linha + 1
    Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Qualquer coisa da o grito.
Abraço

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

 
Postado : 20/01/2015 8:28 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Tenta assim:

Sub AtualizarDDE()
Dim i           As Long
Dim Ativo       As String
Dim wsParam     As Worksheet
Dim Extencao()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False

Extencao = Array(".abe", ".max", ".min", ".ult", ".qtt", ".neg", ".fec", ".var")
Set wsParam = ThisWorkbook.Worksheets("Parameters")
Linha = 3

    Do Until IsEmpty(wsParam.Cells(Linha, 1))
        Ativo = wsParam.Cells(Linha, 1).Value
        For i = 2 To 9
            wsParam.Cells(Linha, i).NumberFormat = "@"
            wsParam.Cells(Linha, i).Value = "=TZ|" & Ativo & Extencao(i - 1)
        Next i
        Linha = Linha + 1
    Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 20/01/2015 8:29 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

Agora apareceu "Subscrito fora do intervalo"

 
Postado : 20/01/2015 8:32 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

De qual?

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

 
Postado : 20/01/2015 8:34 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

wsParam.Cells(Linha, i).Value = "=TZ|" & Ativo & Extencao(i - 1)

 
Postado : 20/01/2015 8:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Enviei uma nova atualização no meu último post com mais correções. está -2
tenta ele.

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

 
Postado : 20/01/2015 8:40 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

Bernardo, o seu código funciona, só tem um detalhe:

Nesta linha:
wsParam.Cells(Linha, i).Value = "TZ|" & Ativo & Extencao(i - 2)

o correto é "=TZ|", assim:

wsParam.Cells(Linha, i).Value = "=TZ|" & Ativo & Extencao(i - 2)

e quando faz isso, dá problema de novo, dando o erro 1004 erro na definição do objeto

 
Postado : 20/01/2015 8:50 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se colocar um "=" (sinal de igual) na frente o Excel interpreta como uma fórmula, e essa fórmula não existe no Excel e também não existe essa fórmula nomeada.

Caso tenha realmente a necessidade de aparecer esse "=" e realmente não for uma fórmula, deixe assim:

wsParam.Cells(Linha, i).Value = "'=TZ|" & Ativo & Extencao(i - 2)

Qualquer coisa da o grito.
Abraço

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

 
Postado : 20/01/2015 8:54 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

é uma formula na verdade! ela remete a um link dde
a formula seria essa:
=TZ|código.condição

sendo que tz é o nome do programa. desta forma como vc colocou, fica uma aspa no começo da formula e ela deixa de ser formula.

se fizer manualmente funciona, mas é inviavel fazer em tantas linahs e colunas e o tempo todo

 
Postado : 20/01/2015 9:54 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tenta assim então:

wsParam.Cells(Linha, i).FormulaLocal = "=TZ|" & Ativo & Extencao(i - 2)

Qualquer coisa da o grito.
Abraço

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

 
Postado : 20/01/2015 10:00 am
(@jpherarth)
Posts: 26
Eminent Member
Topic starter
 

nada ainda! podemos fazer assim:

chegamos até aqui:

'=TZ|BBDC4!neg nos valores de células
é possivel tirar a crase na marra pelo vba e deixar só o =TZ|BBDC4!neg ?

 
Postado : 20/01/2015 10:15 am
Página 1 / 2