BLOQUEAR CAMPO PARA ENTRADA MANUAL,

MARCOSEB51 17/08/2012 21:14:25
#408123
Boa tarde a todos,
Me perdoem se estou postando em lugar errado. Ja pesquisei no forum, na internet e não encontro.

Estou fazendo uma planilha de controle de falha na empresa. Pois os operadores andam registrando muitos valores incorretos e prejudicando o desempenho e do departamento.
Pensando nisso, resolvi fazer uma planilha controle, mas preciso de campos bloqueados para digitação, eu uso codigo de barras e leitura através de escaner manual sem fio.
Em meu form de nome CONTROLERETESTE, tenho um TEXTBOXde nome SERIAL1.
1º Gostaria que este textbox não aceitasse a entrada de valores, caracteres, qualquer informação digitada no teclado, apenas informações lidas pelo escaner(tudo no departamento esta em código de barras ;

2º Encontrei aqui no forum o comando que abre direto o vba, sem mostrar o excel, mas depois que eu clico no [Ô]X[Ô] para fechar o form, o excel é exibido e com livre acesso para o operador. Seria possível abrir somente o form em VBA para uso do operador e mesmo que fechar o form, o excel onde os dados são salvos, fica oculto ou ate mesmo fechado, bloqueado, somente através de um botão ou login e senha o excel seria exibido para trabalho, etc?


3º após o serial ser escaneado, preciso que seja pesquisado na planilha de CONTROLE DE ENTRADA, caso encontre, pesquise também na planilha de CONTROLERETESTE, caso não encontrar, abra o form CONTROLE1FALHA, caso encontrar O SERIAL, na mesma LINHA , procure pela célula 3 onde esta o número da locação onde o item foi alocado, caso encontrar, procure na célula ao lado, caso estiver vazia, abra o form CONTROLE2FALHA.SHOW. Este formulário deve ser preenchido manualmente pelo operador, pois os registros dos defeitos, informações das falhas devem ser registrados.

obrigado desde ja pela ajuda.

qualquer dívida, maiores informações, podem enviar para meu email pessoal, marcoseb51@hotmail.com

Ja estou com a planilha de entrada pronta, faltando apenas aplicar o bloqueio do teclado para registros de dados pelos operadores, reduzindo a chance de informações incorretas.
A planilha de controle de falha e unidades aprovadas estão prontas, falta pouco para colocar tudo em operação.

obrigado a todos...
HMOLIVEIRABR 18/08/2012 10:20:05
#408128
Amigo porque não desenvolve um sistema em vez de utilizar planilhas???
ERIVELTONVGA 18/08/2012 10:41:22
#408129
bom dia

Citação:

:
Amigo porque não desenvolve um sistema em vez de utilizar planilhas???



Realmente o HMOLIVEIRABR tem razão se voce fizer um sistema vai ser melhor que a planilha e voce vai tirar muito mais de um sistema do que planilha.

Qual o seu grau de conhecimento em desenvolvimento?

Aqui no VBMANIA todos estamos dispostos a ajudar quem precisa e quem quer aprender.
Muitos me ajudaram e ainda ajudam.

Abraço

MARCOSEB51 20/08/2012 21:04:38
#408240
Amigos...obrigado pela atenção, mas o problema é que na empresa onde trabalho e pretendo usar este recurso em VBA, não tem licensa para usar bananco de dados, compraram apenas para o excel. Respondendo a pergunta sobre conhecimento...sou leigo...aprendi VBA na unha...quebrando a cara no teclado.

O VB que fiz monitora 3 planilhas, uma registro de entrada, uma registro de reteste e outra registro de unidades aprovadas.

Abaixo segue o codigo parcial da planilha de entrada: pesquisado em 2 tabelas diferentes, pois os operadores cometem muitos erros de digitação.

Onde SERIAL1 é o campo onde sera escaneado o serial a ser

[ô]come aqui

Private Sub SERIAL1_Change()
If keyascii = 13 Then
[ô]consulta

With Worksheets([Ô]CONTROLE DE ENTRADA EM RRT[Ô]).Range([Ô]C:C[Ô])
Set C = .Find(SERIAL1.Value, LookIn:=xlValues, LookAt:=xlPart)

contador = 0

Do While SERIAL1.Text = ActiveCell.Value And contador < 50
ActiveCell.Offset(0, 1).Select
contador = contador + 1
Loop

If Not C Is Nothing Then
Me.LOC1.Value = C.Offset(0, 3).Value
Me.OPERADOR.Value = C.Offset(0, -1).Value
Me.PN.Value = C.Offset(0, 1).Value
Me.MODELO.Value = C.Offset(0, 2).Value
Me.TURNO.Value = C.Offset(0, 6).Value

MsgBox [Ô]ESTE SERIAL JÁ FOI CADASTRADO NA PLANILHA DE ENTRADA[Ô], vbCritical, [Ô]ATENÇÃO![Ô]


Me.SERIAL1.Value = [Ô][Ô]
Me.LOC1.Value = [Ô][Ô]
Me.OPERADOR.Value = [Ô][Ô]
Me.PN.Value = [Ô][Ô]
Me.MODELO.Value = [Ô][Ô]
Me.TURNO.Value = [Ô][Ô]
Range([Ô]C:C[Ô]).Select


[ô]Unload Me

Exit Sub
End If

End With
End If
End Sub

Private Sub SALVAR_Click()
Dim iRow As Long
Dim iRow10 As Long

Dim WS As Worksheet
Set WS = Worksheets([Ô]CONTROLE DE ENTRADA EM RRT[Ô])

Dim WS2 As Worksheet
Set WS2 = Worksheets([Ô]Dados[Ô])

Dim contagem As Long

[ô]VERIFICA SE TODOS OS CAMPOS FORAM PREENCHIDOS
If Trim(Me.SERIAL1.Value) = [Ô][Ô] Then
Me.SERIAL1.SetFocus
MsgBox [Ô]Por Favor Insira o Serial Number[Ô]
Exit Sub
End If

If Trim(Me.LOC1.Value) = [Ô][Ô] Then
Me.LOC1.SetFocus
MsgBox [Ô]Por Favor Insira a Locação[Ô]
Exit Sub
End If

If Trim(Me.OPERADOR.Value) = [Ô][Ô] Then
Me.OPERADOR.SetFocus
MsgBox [Ô]Por Favor Insira o nome do Operador[Ô]
Exit Sub
End If

If Trim(Me.PN.Value) = [Ô][Ô] Then
Me.PN.SetFocus
MsgBox [Ô]Por Favor Insira o Part Number[Ô]
Exit Sub
End If

If Trim(Me.MODELO.Value) = [Ô][Ô] Then
Me.MODELO.SetFocus
MsgBox [Ô]Por Favor Insira o Modelo[Ô]
Exit Sub
End If

If Trim(Me.TURNO.Value) = [Ô][Ô] Then
Me.TURNO.SetFocus
MsgBox [Ô]Por Favor Insira o Turno[Ô]
Exit Sub
End If

[ô]PROCURA LINHA E CELULA VAZIA PARA ENTRADA DE UM NOVO SERIAL
iRow = WS.Cells.Find(What:=[Ô]*[Ô], SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

iRow10 = WS.Cells.Find(What:=[Ô]*[Ô], SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row

Cells(iRow, 2).Select

[ô]COPIA PARA O EXCEL OS DADOS INSERIDOS NO FORM DE CONTROLEENTRADA

WS.Cells(iRow, 2).Value = Me.OPERADOR.Value
WS.Cells(iRow, 3).Value = Me.SERIAL1.Value
WS.Cells(iRow, 4).Value = Me.PN.Value
WS.Cells(iRow, 5).Value = Me.MODELO.Value
WS.Cells(iRow, 6).Value = Me.LOC1.Value
WS.Cells(iRow, 7).Value = Format(Date, [Ô]MM/DD/YYYY[Ô])
WS.Cells(iRow, 8).Value = Time
WS.Cells(iRow, 9).Value = Me.TURNO.Value
WS.Cells(iRow, 10).Value = Format(Date, [Ô]DD[Ô])
WS.Cells(iRow, 11).Value = Format(Date, [Ô]MM[Ô])

[ô] ATRIBUI UM NUMERO CRESCENTE A CADA LINHA QUE FOI INSERIDO UM SERIAL

If WS.Cells(iRow10, 1).Value = ([Ô]No.[Ô]) Then
contagem = 1
WS.Cells(iRow, 1).Value = contagem
Else
contagem = WS.Cells(iRow10, 1).Value
WS.Cells(iRow, 1).Value = contagem + 1
End If

[ô]APAGA OS DADOS DO FORM CONTROLEENTRADA
Me.MODELO.Value = [Ô][Ô]
Me.SERIAL1.Value = [Ô][Ô]
Me.PN.Value = [Ô][Ô]
Me.TURNO.Value = [Ô][Ô]
Me.LOC1.Value = [Ô][Ô]
Me.OPERADOR.Value = [Ô][Ô]

Me.SERIAL1.SetFocus

End Sub

Private Sub ControleFalha_Click()
Unload CONTROLEENTRADA

Dim WS As Worksheet
Set WS = Worksheets([Ô]CONTROLE DE UNIDADES COM FALHA[Ô])
Sheets([Ô]CONTROLE DE UNIDADES COM FALHA[Ô]).Select
CONTROLERETESTE.Show

End Sub

Private Sub GOTOControleAprovadas_Click()
Unload CONTROLEENTRADA

Dim WS As Worksheet
Set WS = Worksheets([Ô]CONTROLE DE UNIDADES APROVADAS[Ô])
Sheets([Ô]CONTROLE DE UNIDADES APROVADAS[Ô]).Select
CONTROLEAPROVADAS.Show

End Sub

Private Sub Location_Change()

End Sub

Private Sub Model_Change()

End Sub

Private Sub LOC1_Change()

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox [Ô]Favor sair do programa clicando no botão [ô]Fechar[ô][Ô] _
, vbCritical _
, [Ô]Erro[Ô]
End If
End Sub

Tópico encerrado , respostas não são mais permitidas