- 25 Mai 2017 às 16:58
#23424
Olá,
Estou com um problema com o método Range e não consegui encontrar solução em nenhum outro tópico ou fórum.
Meu problema é bem específico e acontece de certa forma aleatoriamente.
O que acontece é que fiz um código em VBA para automatizar uma serie de funções em uma planilha. Quando fiz o código eu estava em um computador com Windows 10 e Office 2010, porém a planilha foi desenvolvida pra ser usada por uma pessoa em um computador com Windows XP e Office 2007.
Não existe a possibilidade de eu atualizar o Office ou o Windows.
O meu problema começou quando fui testar a planilha no computador do usuário (Office 2007). No meu computador o código funcionou perfeitamente, porém ao rodar o teste no computador final ocorreu um erro de tempo de execução, o famoso 1004. Não consegui até agora encontrar o problema.
Já utilizei o método Select antes do Range, porém isso só piorou meu problema sendo que agora nem no meu computador funciona mais o código.
Segue a parte do código em que estou tendo problemas:
Estou com um problema com o método Range e não consegui encontrar solução em nenhum outro tópico ou fórum.
Meu problema é bem específico e acontece de certa forma aleatoriamente.
O que acontece é que fiz um código em VBA para automatizar uma serie de funções em uma planilha. Quando fiz o código eu estava em um computador com Windows 10 e Office 2010, porém a planilha foi desenvolvida pra ser usada por uma pessoa em um computador com Windows XP e Office 2007.
Não existe a possibilidade de eu atualizar o Office ou o Windows.
O meu problema começou quando fui testar a planilha no computador do usuário (Office 2007). No meu computador o código funcionou perfeitamente, porém ao rodar o teste no computador final ocorreu um erro de tempo de execução, o famoso 1004. Não consegui até agora encontrar o problema.
Já utilizei o método Select antes do Range, porém isso só piorou meu problema sendo que agora nem no meu computador funciona mais o código.
Segue a parte do código em que estou tendo problemas:
Código: Selecionar todos
Sub Imprimir()
Dim QtdOrdensParaImpressao, Linha As Integer
Dim LinhaDasOrdens() As Integer
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Conta a quantidade de ordens que foram inseridas no relatório para impressão''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Linha = 5
QtdOrdensParaImpressao = 0
While Linha <= 28
If Plan1.Cells(Linha, 3) <> "" Then
QtdOrdensParaImpressao = QtdOrdensParaImpressao + 1
ReDim Preserve LinhaDasOrdens(0 To QtdOrdensParaImpressao) 'Redimensiona array das linhas onde estão as ordens inseridas
LinhaDasOrdens(QtdOrdensParaImpressao) = Linha 'Salva o número da linha em que foi inserida informações das ordens
End If
Linha = Linha + 3
Wend
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Verifica se alguma ordem inserida no relatório para impressão já foi impressa alguma vez'''''''''
'Isso evita de uma ordem ser produzida duas vezes'''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim OrdemJaImpressa() As Variant
Dim QtdJaImpressa As Integer
QtdJaImpressa = 0
If QtdOrdensParaImpressao > 0 Then
' Procura se essa ordem já foi impressa durante o tempo que essa planilha está aberta
For i = 1 To QtdOrdensParaImpressao
For j = 2 To 1000
If Plan9.Cells(j, 1) = Plan1.Cells(LinhaDasOrdens(i), 3) Then
QtdJaImpressa = QtdJaImpressa + 1
ReDim Preserve OrdemJaImpressa(0 To QtdJaImpressa) 'Array que salva as ordens que já foram impressas
OrdemJaImpressa(QtdJaImpressa) = Plan1.Cells(LinhaDasOrdens(i), 3) 'Salva a ordem que já foi impressa
Range("C" & LinhaDasOrdens(i)).Interior.Color = RGB(255, 0, 0) 'Pinta
End If
Next j
Next i
' Procura no banco de dados externo se alguma ordem já foi impressa.
For i = 1 To QtdOrdensParaImpressao
For j = 2 To 1000
If Plan2.Cells(j, 1) = Plan1.Cells(LinhaDasOrdens(i), 3) Then
QtdJaImpressa = QtdJaImpressa + 1
ReDim Preserve OrdemJaImpressa(0 To QtdJaImpressa) 'Array que salva as ordens que já foram impressas
OrdemJaImpressa(QtdJaImpressa) = Plan1.Cells(LinhaDasOrdens(i), 3) 'Salva a ordem que já foi impressa
Range("C" & LinhaDasOrdens(i)).Interior.Color = RGB(255, 0, 0) 'Pinta
End If
Next j
Next i
If QtdJaImpressa > 0 Then
'MsgBox "ORDEM(S) EM DESTAQUE JÁ FOI(FORAM) IMPRESSA(S)! DESEJA CONTINUAR?"
resultado = MsgBox("ORDEM(S) EM DESTAQUE JÁ FOI(FORAM) IMPRESSA(S)! DESEJA CONTINUAR?", vbYesNo, "ORDENS JÁ IMPRESSAS")
If resultado = vbYes Then
Range("C5:E28").Interior.Color = RGB(54, 96, 146) 'Pinta
Else
' Trunca função
Range("C5:E28").Interior.Color = RGB(54, 96, 146) 'Pinta
Exit Sub
End If
End If
End If
Você não está autorizado a ver ou baixar esse anexo.