Notifications
Clear all

Enxugar código

6 Posts
3 Usuários
0 Reactions
1,662 Visualizações
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

Boa tarde pessoal.
Tenho uma planilha e varios formulários, em um desses formulários eu insiro, edito e pesquiso dados. O problema é que ainda estou em estado de desenvolvimento da planilha, constantemente mudando o nome e estrutura dos dados. Quero declarar a planilha como uma variavel no inicio do codigo, dse forma que não terei que alterar o codigo todo sempre que alterar o nome da planilha.
Tipo, em uma parte do código, o nome da planilha se repete várias vezes, mas não sei como declara-la como variavel ou constante.

Private Sub BTN_SALVAR_Click()
Call desproteger
    UltimaLinha = Sheets("NF_SAIDA").Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1
    If UltimaLinha < 3 Then UltimaLinha = 3
    Application.DisplayAlerts = False
    'VERIFICA SE O CONTEUDO DA TEXTBOX NF_SAIDA É REPETIDO, SE FOR BLOQUEIA O SALVAMENTO DO FORM
    For i = 3 To UltimaLinha
        If Sheets("NF_SAIDA").Range("C" & i).Value = TXT_NOTAFISCAL.Text Then
            MsgBox "Essa Nota Fiscal já está Cadastrada!", vbCritical, "ERRO"
            TXT_NOTAFISCAL.Text = ""
            TXT_NOTAFISCAL.SetFocus
            Exit Sub
        End If
    Next
    'SALVA O CONTEUDO DAS TEXT NAS ULTIMAS CELULAS VAZIAS DAS COLUNAS ESPECIFICADAS
    Sheets("NF_SAIDA").Range("A" & UltimaLinha).Value = TXT_SAIDA.Text
    Sheets("NF_SAIDA").Range("B" & UltimaLinha).Value = TXT_EMISSAO.Text
    Sheets("NF_SAIDA").Range("C" & UltimaLinha).Value = TXT_NOTAFISCAL.Text
    Sheets("NF_SAIDA").Range("D" & UltimaLinha).Value = TXT_CLIENTE.Text
    Sheets("NF_SAIDA").Range("E" & UltimaLinha).Value = TXT_VOLUMES.Text
    Sheets("NF_SAIDA").Range("F" & UltimaLinha).Value = CMB_TRANSPORTADORA.Text
    Sheets("NF_SAIDA").Range("g" & UltimaLinha).Value = LISTBOX1.Text
    Sheets("NF_SAIDA").Range("H" & UltimaLinha).Value = TXT_OBSERVAÇOES.Text
    MsgBox "Dados salvos com Sucesso!", vbDefaultButton1, "SALVAR"
    TXT_EMISSAO.Text = "": TXT_NOTAFISCAL.Text = "": TXT_CLIENTE.Text = "": TXT_VOLUMES.Text = "": TXT_OBSERVAÇOES.Text = ""
    TXT_NOTAFISCAL.SetFocus
    Application.DisplayAlerts = True
    Call PROTEGER
End Sub
 
Postado : 10/10/2014 9:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

No ambiente VBA, em propriedades você poderá verificar que uma planilha possui dois nomes: (Name) e Name, sendo que o 2º é o nome da aba, sendo o 1º um nome que só pode ser alterado abrindo o ambiente VBA. Se no caso o nome da sua planilha na aba for "NF_SAIDA" e no ambiente VBA "Plan1", faça assim:

Substitua

 Sheets("NF_SAIDA").Range("A" & UltimaLinha).Value = TXT_SAIDA.Text

por

 Plan1.Range("A" & UltimaLinha).Value = TXT_SAIDA.Text

Assim você poderá alterar o nome da aba a vontade. Tem outras maneiras, mas essa é a mais utilizada. ;)

 
Postado : 10/10/2014 10:22 am
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

Então, eu já utilizo essa forma, mas queria algo mais ou menos assim.


Dim PlanMestra as Worksheet
PlanMestra = "Planilha Registro"
PlanMestra.Range("A" & UltimaLinha).Value = TXT_SAIDA.Text

Dessa Forma, mas infelizmente não é exatamente da forma como eu quero :/

 
Postado : 10/10/2014 4:35 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Seria isso?

Dim wsMestra As Worksheet

Set wsMestra = Sheets("teste")

wsMestra.Range("A2").Value2 = "verifica"

 
Postado : 10/10/2014 5:27 pm
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

Ajudou muito, obrigado

 
Postado : 11/10/2014 7:04 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Se ajudou, por favor, clique na mãozinha como agradecimento. Obrigado.

 
Postado : 11/10/2014 7:42 am