Notifications
Clear all

Problema-com-vba-excel-2013-64-windows-81-64-bits

6 Posts
2 Usuários
0 Reactions
996 Visualizações
(@lucao)
Posts: 4
Active Member
Topic starter
 

Bom tarde a todos!
Sou usuário novo aqui no fórum e gostaria se possível da ajuda da comunidade, pois estou com um problema que não consigo resolver desde que instalei o Windows 8.1 + Office 2013, ambos 64 bits.
Anteriormente eu rodava o Windows Vista/7 64 com Office 2003/2010 32 bits e nunca tive esse problema.
Eu rodo uma planilha com um código em Vba que vai armazenando dados em linhas e colunas a cada 2 segundos, fazendo um loop simples. Antes do update, eu cheguei a rodar 4 planilhas dessas, apenas abrindo um outro excel, e agora eu não consigo sequer abrir outro excel que a macro para, com erro em tempo de execução.
Já tentei o que os meu parcos conhecimentos em Vba poderiam, como colocar "Sheets("ativos").Select" e "sh = ActiveSheet.Name" no código mas não dá certo, e quando eu coloco "Windows("tradeteste1").Activate" eu até consigo abrir outro excel sem parar a macro, mas em todo loop o cursor volta para a planilha que está rodando o código e se eu ficar digitando na planilha sem código o loop para até eu parar de digitar, ou seja, é impossível de trabalhar em outro projeto. Acredito que seja alguma configuracão nova do VBA/Office ou bug mesmo, pois antes o funcionamento era perfeito!
Aqui segue um trecho do código, e coloquei um print screen do problema também:
Abraço a todos!
Lucão

Sub espera()

tempo = Range("tempo")
Ult = Range("ult")

If Ult > 0 Then
nova

End If

If Ult = 0 Then
Range("tempo") = tempo + 1
Application.OnTime Now + TimeValue("00:00:05"), "espera"
End If

End Sub

 
Postado : 22/09/2013 1:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bo tarde!!
Tente fazer referencia aos objetos.

Option Explicit


Sub RangeError()

    Dim sourceBook As Workbook
    Dim sourceSheet As Worksheet
    Dim sourceSheetSum As Worksheet

    Set sourceBook = ActiveWorkbook
    Set sourceSheet = sourceBook.Sheets("Sheet1")
    Set sourceSheetSum = sourceBook.Sheets("Sheet2")

    sourceSheetSum.Select

    sourceSheetSum.Range("C3").Select       

End Sub

Leia:
http://support.microsoft.com/kb/905164

Sou, eu, alexandreVBA

Att

 
Postado : 22/09/2013 2:18 pm
(@lucao)
Posts: 4
Active Member
Topic starter
 

Alexandre, grato pelas informações!
Mas eu não conheço muito de VBA, faço as coisas meio que por engenharia reversa e procurando no Google, nunca estudei a fundo o tema...
Onde eu faria essa referência?
Att,
Lucão
Obs: Segue meu código do loop.
Sub nova()

htrade = range("htrade")
cont1 = range("cont1")
If cont1 = 1 Then

nova2
Exit Sub
End If

dolar = range("dolar")
htrade = range("htrade")
LINHA = range("linha")
range("a" & LINHA) = Time
range("b" & LINHA) = range("dolar")
range("c" & LINHA) = range("dolarl")
If range("linha").value > 82 Then
range("f" & LINHA) = range("risco")
range("e" & LINHA) = range("lotet")
End If
If range("linha").value > 86 Then
range("n" & LINHA) = range("g4")
range("o" & LINHA) = range("i2")
range("P" & LINHA) = range("D3")

range("n13") = range("d" & LINHA)
range("n14") = WorksheetFunction.Min(range(("d" & LINHA), ("d" & range("timi2"))))
range("n15") = WorksheetFunction.Max(range(("d" & LINHA), ("d" & range("timi2"))))

range("m" & LINHA) = range("dolarl") - Application.WorksheetFunction.Average(range(("c" & LINHA), ("c" & range("timi2"))))

range("i1") = WorksheetFunction.Average(range(("o" & LINHA), ("o" & range("timi2"))))

range("n7") = range("m" & LINHA)
range("n8") = WorksheetFunction.Min(range(("m" & LINHA), ("m" & range("timi2"))))

range("n9") = WorksheetFunction.Max(range(("m" & LINHA), ("m" & range("timi2"))))

range("c5") = WorksheetFunction.Average(range(("f" & LINHA), ("f" & range("timi2"))))

range("d" & LINHA) = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("timi2"))))

range("i10") = WorksheetFunction.Average(range(("c" & LINHA), ("c" & range("timi2"))))
range("p13") = WorksheetFunction.StDevP(range(("C" & LINHA), ("c" & range("timi2"))))
range("o13") = WorksheetFunction.StDevP(range(("b" & LINHA), ("b" & range("timi2"))))
range("t1") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("copl"))))
range("t2") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("timi2"))))
range("t3") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("a8"))))
range("t4") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("copl"))))
range("t5") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("timi2"))))
range("t6") = range("dolar") - Application.WorksheetFunction.Average(range(("B" & LINHA), ("b" & range("a8"))))
range("t7") = Application.WorksheetFunction.Average(range(("d" & LINHA), ("d" & range("a7"))))
End If

If range("d8") <> 0 And range("d4") < TimeValue("00:00:05") Then

range("c13") = WorksheetFunction.Average(range(("c" & LINHA), ("c" & range("timi2"))))
range("f11") = range("linha")
Application.ScreenUpdating = False
range("e" & range("f12"), ("e" & range("f11"))) = "0"
range("f5") = range("dolar")
range("o" & range("f12"), ("o" & range("f14"))).Select
Selection.ClearContents
Application.ScreenUpdating = True

End If

If range("d8") = 0 And range("d4") < TimeValue("00:00:05") Then

range("c13") = WorksheetFunction.Average(range(("c" & LINHA), ("c" & range("timi2"))))
range("f11") = range("linha")
Application.ScreenUpdating = False
range("e" & range("f12"), ("e" & range("f11"))) = "0"
range("f5") = range("dolar")
range("o" & range("f12"), ("o" & range("f14"))).Select
Selection.ClearContents
Application.ScreenUpdating = True

End If

If range("d8") <> 0 And range("linha").value > 100 Then

range("c15") = Application.WorksheetFunction.Average(range(("e" & LINHA), ("e" & range("f11"))))
range("E10") = Application.WorksheetFunction.Average(range(("P" & LINHA), ("P" & range("f15"))))
range("E11") = Application.WorksheetFunction.Max(range(("P" & LINHA), ("P" & range("f15"))))
range("E12") = Application.WorksheetFunction.Min(range(("P" & LINHA), ("P" & range("f15"))))
range("l3") = Time
range("i3") = Application.WorksheetFunction.Average(range(("n" & LINHA), ("n" & range("f11"))))

End If

If range("d8") = 0 And range("linha").value > 100 Then

range("k3") = Time
range("i3") = Application.WorksheetFunction.Average(range(("n" & LINHA), ("n" & range("f11"))))
range("c15") = Application.WorksheetFunction.Average(range(("e" & LINHA), ("e" & range("f11"))))
range("E10") = Application.WorksheetFunction.Average(range(("P" & LINHA), ("P" & range("f15"))))
range("E11") = Application.WorksheetFunction.Max(range(("P" & LINHA), ("P" & range("f15"))))
range("E12") = Application.WorksheetFunction.Min(range(("P" & LINHA), ("P" & range("f15"))))
End If
If range("n4") <> 0 Then
range("j" & LINHA) = range("n4")

End If

If range("m7") <> 0 Then
range("k" & LINHA) = range("m7")
End If
If range("m7") + range("n4") = 0 Then
range("i" & LINHA) = range("dolar")
End If

Dim y As range
Set y = range(("c" & LINHA), ("c80"))

Dim x As range
Set x = range(("b" & LINHA), ("b80"))

Dim Z As range
Set Z = range("tend")
Set w = range("dolar")

Dim a As Variant
a = Application.Trend(y, x, w)

Dim b As Variant
b = Application.Trend(y, x, Z)

range("g6").value = b
range("g7").value = a
range("h2") = Application.RSq(y, x)

If range("b1").value > 2 And range("linha").value > 180 Then
Application.Speech.Speak ("Azi")
range("d1") = range("agora")
range("a5") = range("dolarl")
range("a4") = range("dolar")
range("b3") = "C"
range("a3") = range("agora")
range("q" & LINHA) = range("dolar")
range("G11") = range("linha")
End If

If range("c1").value > 2 And range("linha").value > 180 Then
Application.Speech.Speak ("Lá")
range("e1") = range("agora")
range("a5") = range("dolarl")
range("a4") = range("dolar")
range("b3") = "V"
range("a3") = range("agora")
range("r" & LINHA) = range("dolar")
range("G11") = range("linha")
End If
range("linha") = LINHA + 1
Application.OnTime Now + TimeValue("00:00:01"), "nova"

 
Postado : 22/09/2013 2:30 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Se também poder postar seu arquivo modelo, compactado!!

No momento eu estou sem o pacote Office.
Att

 
Postado : 22/09/2013 2:35 pm
(@lucao)
Posts: 4
Active Member
Topic starter
 

Alexandre,
Segue em anexo o arquivo.
O que me deixa intrigado, e por isso que coloquei no Título do tópico, é que antes ( W7 64 + Office 2010 32) e versões anteriores eu nunca tive este tive de problema desde que abrisse um outro Excel. Agora não consigo fazer absolutamente nada sem ter que interromper a macro.
Ps: Na verdade não segue nada, rs, pois o máximo permitido por anexo são 500 KB e a planilha no Winrar fica com 1,5 MB.
Tem outra forma de envia-lo?
Forte abraço,
Lucão.

 
Postado : 26/09/2013 7:33 am
(@lucao)
Posts: 4
Active Member
Topic starter
 

Mandei via "emailchess"
Att,
Lucão.

 
Postado : 26/09/2013 7:45 am