Notifications
Clear all

Gravar conteudo de controles em 02 ou mais sheets diferentes

5 Posts
2 Usuários
0 Reactions
1,456 Visualizações
(@joilsondo)
Posts: 47
Eminent Member
Topic starter
 

Bom dia Galera,

Tenho este código abaixo que uso para gravar os dados na planilha:

Private Sub CommandButton1_Click()

Dim intLinha As Integer

If Txtemissao.Text = "" Then
  MsgBox "Informe a data de emissão", vbInformation
  Txtemissao.SetFocus

Else
intLinha = ThisWorkbook.Worksheets("Remessa").Range("A65536").End(xlUp).Offset(1, 0).Row

Txttotprod = Txtqtd * Txtunit

ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 1) = CDate(Txtemissao.Value)
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 2) = Txtnatopera.Value
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 3) = Txtnumnota.Value
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 4) = ComboBox1.Value
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 6) = Txtqtd.Value
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 7) = CDbl(Txtunit.Value)
ThisWorkbook.Worksheets("Remessa").Cells(intLinha, 8) = CDbl(Txttotprod.Value)

MsgBox "Dados gravados com sucesso", vbInformation, "Registro OK"

Txtqtd = ""
Txtunit = ""
Txttotprod = ""
ComboBox1.DropDown
ComboBox1.SetFocus

End If
End Sub

Porém estes dados gravam somente em uma planilha, eu gostaria que eles fossem gravados na plan1 e plan 2 também, como declarar para que ao mesmo tempo os dados sejam gravados em 02 sheets diferentes?

Obrigado.

 
Postado : 16/01/2014 7:51 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

JoilsonDO,

Boa Noite!

Faça assim:

Private Sub CommandButton1_Click()

    Dim intLinha, i As Integer
    Dim NomePlan As String
    Dim Wks As Worksheet

    If Txtemissao.Text = "" Then
      MsgBox "Informe a data de emissão", vbInformation
      Txtemissao.SetFocus

    Else
        For Each Wks In Worksheets
            If Wks.Name = "Plan1" Or Wks.Name = "Plan2" Then
                NomePlan = Wks.Name
                intLinha = ThisWorkbook.Worksheets(NomePlan).Range("A65536").End(xlUp).Offset(1, 0).Row
            
                Txttotprod = Txtqtd * Txtunit
            
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 1) = CDate(Txtemissao.Value)
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 2) = Txtnatopera.Value
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 3) = Txtnumnota.Value
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 4) = ComboBox1.Value
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 6) = Txtqtd.Value
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 7) = CDbl(Txtunit.Value)
                ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 8) = CDbl(Txttotprod.Value)
            
                MsgBox "Dados gravados com sucesso", vbInformation, "Registro OK"
            
                Txtqtd = ""
                Txtunit = ""
                Txttotprod = ""
                ComboBox1.DropDown
                ComboBox1.SetFocus
            End If
        Next
    End If
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 16/01/2014 9:29 pm
(@joilsondo)
Posts: 47
Eminent Member
Topic starter
 

Olá Wagner Morel, muito obrigado pela sua ajuda.
Deu certinho. Eu apenas declarei uma variável (no caso mês) para que selecione no combobox qual planilha (aba) desejo gravar.

Mas ficou show de bola!!! Agradeço sua atenção!!

Abaixo segue o código que adaptei com a variável para escolher a sheet para gravar.

Private Sub CommandButton1_Click()

Dim intLinha, i As Integer
Dim NomePlan, Mes As String
Dim Wks As Worksheet

Mes = ComboBox1

If TextBox1.Text = "" Then
MsgBox "Informe a data de emissão", vbInformation
TextBox1.SetFocus

Else
For Each Wks In Worksheets
If Wks.Name = Mes Or Wks.Name = "Geral" Then
NomePlan = Wks.Name
intLinha = ThisWorkbook.Worksheets(NomePlan).Range("A65536").End(xlUp).Offset(1, 0).Row



ThisWorkbook.Worksheets(NomePlan).Cells(intLinha, 1) = TextBox1.Value


MsgBox "Dados gravados com sucesso", vbInformation, "Registro OK"


End If
Next
End If
End Sub

Um dúvida também: Quando termina de gravar eu coloquei para aparecer uma MsgBox, porém por gravar nas duas plans...esta MsgBox aparece duas vezes, uma na sequencia da outra. Será que teria como, aparecer uma única vez? Se não tiver, sem problemas, pois já está ótimo o código.

Mais uma vez, obrigado.
Abraços

 
Postado : 17/01/2014 7:39 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Coloque o comando com a MsgBox depois do último End If, antes do End Sub.

Peço, por gentileza, votar positivamente clicando na mãozinha existente.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 17/01/2014 8:16 pm
(@joilsondo)
Posts: 47
Eminent Member
Topic starter
 

Bom dia Wagner, deu certo colocando a "MSGBOX" após o último End If antes do End Sub.

Muito obrigado pela ajuda.

Abraços.

 
Postado : 21/01/2014 4:20 am