Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por LEOPAULINO
#5825
Olá boa tarde!

Tenho uma planilha de recebimento de notas fiscais, onde gostaria de incluir uma mensagem de obrigatoriedade de preenchimento de campos, entretanto preciso que este preenchimento obrigatório se de incluir o número da Nota Fiscal.

O campo nota fiscal fica nas células de B2 a mais ou menos B40, gostaria que ao digitar número da Nota, fosse obrigatório o preenchimentos dos campos: c2, d2, e2 e f2 (que são respectivamente: Nome da Empresa, CNPJ, Código de Produto e Valor), . Preciso aplicar este código em 40 linhas e criar 12 abas uma para cada mês do ano.

Utilizei o código abaixo na planilha, porém ele obriga a preencher todos os campos, inclusive se eu não preencher os dados não consigo fechar a planilha.

Se alguém puder me ajudar, estou pesquisando e não encontrei nenhum código semelhante.

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Application.CountA(Sheets("Plan1").Range("C7:H7")) < 6 Then MsgBox "preencha o intervalo 'C7:H7'", vbExclamation, "Documento não será salvo" Cancel = True Exit Sub ElseIf Application.CountA(Sheets("Plan1").Range("C23:N73")) < 612 Then MsgBox "preencha o intervalo 'C23:N73'", vbExclamation, "Documento não será salvo" Cancel = True Exit Sub ElseIf Application.CountA(Sheets("Plan1").Range("C78:N88")) < 132 Then MsgBox "preencha o intervalo 'C78:N88'", vbExclamation, "Documento não será salvo" Cancel = True Exit Sub ElseIf Application.CountA(Sheets("Plan1").Range("C98:N115")) < 216 Then MsgBox "preencha o intervalo 'C98:N115'", vbExclamation, "Documento não será salvo" Cancel = True Exit Sub End If End Sub
Avatar do usuário
Por Parkeless
Posts Avatar
#5841
Bom dia!

Seria isso?
Código: Selecionar todos
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim linha As Long
Dim aba As Worksheet

For Each aba In Worksheets
    For linha = aba.Range("A1000000").End(xlUp).Row To 2 Step -1
        If aba.Cells(linha, 1) <> "" Then
            If Application.WorksheetFunction.CountA(Range(aba.Cells(linha, 2), aba.Cells(linha, 6))) < 5 Then
                MsgBox "Erro: Os dados da NF " & aba.Cells(linha, 1) & ", linha " & linha & " da aba " & aba.Name & ", estão incompletos!" & vbNewLine & "A planilha não foi salva.", vbCritical
                Cancel = True
            End If
        End If
    Next linha
Next aba



End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord