Erro de execução Nu...
 
Notifications
Clear all

Erro de execução Null Inválido

6 Posts
2 Usuários
0 Reactions
1,302 Visualizações
(@lesef)
Posts: 4
New Member
Topic starter
 

Bom dia a todos do fórum.
Tenho uma planilha de acompanhamento de quilometragem no formato 000,000 km. Quando estou colocando os valores correspondentes nas abas para alimentação do banco de dados, na tela aparece o seguinte erro: Erro de execução "94" - Null Inválido

Abaixo segue código para se possível alguém me ajudar.
A planilha serve para preencher espaços com cores correspondentes. Agradeço desde já.

Option Base 1
Option Explicit
Const REFCABH = "B1:CW14"
Const REFCABV = "A1:A9925"
Const REFMAPA = "B15:CW9925"
Const QTDITEM = 3
Const EXTSEGMTO = 3
Public wsInspecao As DAO.Workspace
Public dbInspecao As DAO.Database
Public rsRegistro As DAO.Recordset
Public CabecalhoH As Range
Public CabecalhoV As Range
Public Mapeamento As Range

Sub GeraMapeamentoDados(SQL As String, NumItem As Integer, Incremento As Integer, ExibirValor As Boolean)
Dim Km As Double, NumLin As Long, NumCol As Long, RefCel As String

' Abre conjunto registros
Set rsRegistro = dbInspecao.OpenRecordset(SQL, dbOpenSnapshot)
' Processa conjunto registros, gerando mapeamento
While Not rsRegistro.EOF
Km = rsRegistro("km Início").Value
While Km < rsRegistro("km Fim").Value
NumLin = Val(Left$(Format$(Km, "0000.000"), 4)) * QTDITEM + NumItem
NumCol = Val(Mid$(Format$(Km, "0000.000"), 6, 2)) + 1
' Mapeamento.Cells(NumLin, NumCol).Activate
If ExibirValor Then
'Mapeamento.Range(Cells(NumLin, NumCol), Cells(NumLin, NumCol + EXTSEGMTO - 1)).Merge
Mapeamento.Cells(NumLin, NumCol).Value = rsRegistro("Valor").Value
If rsRegistro("Valor").Value >= 2.5 Then
Mapeamento.Cells(NumLin, NumCol).Interior.ColorIndex = Me.Range("BM2").Interior.ColorIndex
ElseIf rsRegistro("Valor").Value >= 1.6 Then
Mapeamento.Cells(NumLin, NumCol).Interior.ColorIndex = Me.Range("AO2").Interior.ColorIndex
Else
Mapeamento.Cells(NumLin, NumCol).Interior.ColorIndex = Me.Range("X2").Interior.ColorIndex
End If
Else
RefCel = "X" & 2 + NumItem - 1
Mapeamento.Cells(NumLin, NumCol).Interior.ColorIndex = Me.Range(RefCel).Interior.ColorIndex
End If
Km = Km + Incremento / 1000
'NumItem = NumItem + 1
Wend
rsRegistro.MoveNext
Wend
' Mapeamento.Cells(1, 1).Activate
' Fecha conjunto registros
rsRegistro.Close
Set rsRegistro = Nothing
End Sub

Sub LimpaMapeamentoDados()
Me.Range(REFMAPA).ClearContents
Me.Range(REFMAPA).ClearFormats
Me.Range(REFMAPA).Borders.LineStyle = xlContinuous
Me.Range(REFMAPA).HorizontalAlignment = xlHAlignCenter
Me.Range(REFMAPA).Cells(1, 1).Activate
End Sub

Private Sub cmdGerarMapeamento_Click()

Dim SQL As String

' Desprotege planilha
Me.Unprotect Me.Name & ".xls"
' Abre banco de dados
Set dbInspecao = OpenDatabase(ThisWorkbook.Path & "" & ThisWorkbook.Name, False, False, "excel 8.0")
' Define ranges
Set CabecalhoH = Me.Range(REFCABH)
Set CabecalhoV = Me.Range(REFCABV)
Set Mapeamento = Me.Range(REFMAPA)
' Limpa área mapeamento na planilha
LimpaMapeamentoDados

' Gera mapeamento dados Desguarnecimento
SQL = ""
SQL = SQL & "select *"
SQL = SQL & " from [Desguarnecimento$]"
SQL = SQL & " order by [km Início]"
GeraMapeamentoDados SQL, 1, 10, False

' Gera mapeamento dados Renovação
SQL = ""
SQL = SQL & "select *"
SQL = SQL & " from [Renovação$]"
SQL = SQL & " order by [km Início]"
GeraMapeamentoDados SQL, 2, 10, False

' Gera mapeamento dados Socaria
SQL = ""
SQL = SQL & "select *"
SQL = SQL & " from [Socaria$]"
SQL = SQL & " order by [km Início]"
GeraMapeamentoDados SQL, 3, 10, False

' Gera mapeamento dados Regulagem Lastro
'SQL = ""
'SQL = SQL & "select *"
'SQL = SQL & " from [Regulagem Lastro$]"
'SQL = SQL & " order by [km Início]"
'GeraMapeamentoDados SQL, 4, 10, False

' Gera mapeamento dados Alivio Tensão
'SQL = ""
'SQL = SQL & "select *"
'SQL = SQL & " order by [km Início]"
'GeraMapeamentoDados SQL, 5, 10, False

' Gera mapeamento dados Preparação Renovação
'SQL = ""
'SQL = SQL & "select *"
'SQL = SQL & " from [Preparação Renovação$]"
'SQL = SQL & " order by [km Início]"
'GeraMapeamentoDados SQL, 6, 10, False

' Fecha banco de dados
dbInspecao.Close
Set dbInspecao = Nothing

' Protege planilha
' Me.Protect Me.Name & ".xls"

End Sub

Private Sub cmdLimparMapeamento_Click()
' Desprotege planilha
' Me.Unprotect Me.Name & ".xls"
' Limpa área mapeamento na planilha
LimpaMapeamentoDados
' Protege planilha
' Me.Protect Me.Name & ".xls"

End Sub

 
Postado : 09/06/2015 5:45 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fica um pouco dificil analisar em cima só das instruções, em qual linha gera o erro ? normalmente quando temos alguma msg, a linha com erro fica grifada em amarelo.

Então arriscando um palpite, geralmente este erro é devido a algum dos campos estar em branco, vazio, e sendo assim teria de fazer o tratamento do erro para continuar, você pode utiliza contronar utilizando :
If Not IsNull(

De uma olhada no link abaixo tem algumas explicações sobre os comandos SQL, é bem interessante :
SQL Tutorial
http://www.w3schools.com/sql/default.asp

[]s

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

 
Postado : 09/06/2015 10:33 am
(@lesef)
Posts: 4
New Member
Topic starter
 

Bom dia Mauro. Obrigado pela ajuda, li um pouco sobre o SQL e deu pra entender algumas coisas. Colocarei o tópico como resolvido pelo trabalho que teve em ler ele todo e me passar o tutorial. Vou me expressar melhor em outro tópico e colocar umas imagens.

 
Postado : 10/06/2015 4:34 am
(@lesef)
Posts: 4
New Member
Topic starter
 

Bom pessoal, estou colocando o tópico agora de maneira mais explicativa com o anexo da imagem do erro. Queria entender o porquê de quando coloco poucos valores na aba de km inicio e km fim aparece esse erro, como se os valores estivessem errado, porém se eu colocar vários valores seguindo o mesmo padrão a planilha roda.

 
Postado : 10/06/2015 4:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

lesef, juntei os dois tópicos, pois entendi que o mesmo ainda não foi resolvido e podemos continuar neste que já havia aberto.

Se continuamos com o erro NULL, como eu disse provavelmente é algum valor em branco, e não disse se ocorre logo no inicio ou apos já ter passado alguns registros pelo Loop, digo isto, pois uma vez que o excel entende celulas formatadas como se tivessem dados, pode ser que esteja entendendo como linha com dados a celula vazia apos o último registro.
Então procure limpar todas as celulas - comando LIMPAR TUDO de preferência em todas as celulas vazias, salve e tente novamente

Se não der resultado, se possivel anexe um modelo reduzido ficará mais fácil identificar o erro.

[]s

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

 
Postado : 10/06/2015 5:32 am
(@lesef)
Posts: 4
New Member
Topic starter
 

Excelente Mauro, muito obrigado! Selecionei todas as colunas e linhas em branco e executei o comando excluir , coloquei para rodar e o código não deu mais erro. Com certeza o código deve procurar valores em toda a planilha e se as linhas não estiverem preenchidas mesmo não tendo que ter valores dará o erro. Muito obrigado pela ajuda, resolvido.

 
Postado : 10/06/2015 6:27 am