1
resposta

[Dúvida] Após criar o botão "incluir novo", a linha original continuou verde

Após colocar todos os parametros conforme a aula, para o botão "incluir novo", a linha original continuou verde, mesmo após sair do formulário. O que fiz errado?

Versão Excel 2019

Código da Workseet

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim Password As String
    Password = 1234
    Planilha1.Unprotect Password
    
        
    Planilha1.Cells(ActiveCell.Row, 1).Interior.Color = vbGreen
    Planilha1.Cells(ActiveCell.Row, 2).Interior.Color = vbGreen
    Planilha1.Cells(ActiveCell.Row, 3).Interior.Color = vbGreen
    Planilha1.Cells(ActiveCell.Row, 4).Interior.Color = vbGreen
    Planilha1.Cells(ActiveCell.Row, 5).Interior.Color = vbGreen
    Planilha1.Cells(ActiveCell.Row, 6).Interior.Color = vbGreen
    
    frmCadastroProdutos.Show
    
    Planilha1.Cells(ActiveCell.Row, 1).Interior.Color = vbWhite
    Planilha1.Cells(ActiveCell.Row, 2).Interior.Color = vbWhite
    Planilha1.Cells(ActiveCell.Row, 3).Interior.Color = vbWhite
    Planilha1.Cells(ActiveCell.Row, 4).Interior.Color = vbWhite
    Planilha1.Cells(ActiveCell.Row, 5).Interior.Color = vbWhite
    Planilha1.Cells(ActiveCell.Row, 6).Interior.Color = vbWhite
    
    Planilha1.Protect Password
    
    Cancel = True
    
End Sub

Código do botão Salvar

Private Sub cmdSalvar_Click()
 'se item novo'
    If cmdSalvar.Caption = "Incluir" Then
        Range("A2").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
        
    End If
1 resposta

Oii, Wladmir! Tudo joia?

O que pode está ocorrendo é que quando há a inclusão de um novo item, o código para mudar da cor não está sendo executado de forma favorável. Um motivo pra isso pode ser que caso o formulário esteja sendo fechado de uma maneira que interrompa a execução do código no evento que adicionou Worksheet_BeforeDoubleClick

Uma solução possível seria mover o código que muda a cor da linha para branco para o código do botão Salvar, logo após a inclusão do novo item. Tendo como resultado, a linha original seria pintada de branco após a inclusão do novo item, independentemente de como o formulário é fechado.

Segue um exemplo para te inspirar:

Private Sub cmdSalvar_Click()
 'se item novo'
    If cmdSalvar.Caption = "Incluir" Then
        Range("A2").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
        
        ' Muda a cor da linha original para branco
        Planilha1.Cells(ActiveCell.Row, 1).Interior.Color = vbWhite
        Planilha1.Cells(ActiveCell.Row, 2).Interior.Color = vbWhite
        Planilha1.Cells(ActiveCell.Row, 3).Interior.Color = vbWhite
        Planilha1.Cells(ActiveCell.Row, 4).Interior.Color = vbWhite
        Planilha1.Cells(ActiveCell.Row, 5).Interior.Color = vbWhite
        Planilha1.Cells(ActiveCell.Row, 6).Interior.Color = vbWhite
    End If
End Sub

Adapte o código acima de acordo com as necessidades do seu projeto e realize os testes.

Espero que a sugestão te ajude. Qualquer dúvida, compartilhe no fórum para podermos te auxiliar.

Bons estudos, Wladmir!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software