Ir ao conteúdo
  • Cadastre-se

OreiaG

Membro Pleno
  • Posts

    293
  • Cadastrado em

Tudo que OreiaG postou

  1. Obviamente, se você protegeu a planilha com senha, precisa colocar a senha no código. Sheets("Geral").Unprotect 123 'senha numérica dispensa aspas Sheets("Geral").Unprotect "abc" 'senha não numérica exige aspas Quanto ao terceiro problema apontado, só vendo o seu arquivo, e as informações sobre o que você pretende.
  2. Marque manualmente como "Bloqueadas" as células dos intervalos Z8:Z42 e AB8:AB42, reescreva o seu código conforme a estrutura abaixo. Sub Private Sub BTNOK_Click() Sheets("Geral").Unprotect ' coloque aqui as ações do seu código ' não coloque comandos para Desbloquear/Bloquear células Sheets("Geral").Protect End Sub
  3. O bloqueio de células é ativado automaticamente ao proteger a planilha e é desativado automaticamente ao desproteger a planilha, não é necessário que a macro faça isso.
  4. No lugar desta linha If Target.Column > 1 Or Target.Value = "" Then Exit Sub coloque esta If Target.Column <> 23 Or Target.Row = 1 Or Target.Value = "" Then Exit Sub
  5. Anexe aqui a outra planilha que faço as alterações no código.
  6. Veja se atende. O código abaixo deve ir no módulo da Planilha1 (clique com o direito na guia da planilha e selecione Exibir Código. Private Sub Worksheet_Change(ByVal Target As Range) Dim nv As String, ov As String If Target.Count > 1 Then Exit Sub If Target.Column > 1 Or Target.Value = "" Then Exit Sub Application.EnableEvents = False nv = Target.Value Application.Undo ov = Target.Value If ov <> "" Then Target.Value = ov & ", " & nv Else: Target.Value = nv Application.EnableEvents = True End Sub
  7. Só é possível colocar mais de uma opção na célula que contém Validação com auxílio de macro. Pode ser? Informe se as opções ficarão em uma única linha na célula, separadas por vírgula, por espaço, ... ou se cada opção ficará em uma linha.
  8. Certamente seria mais fácil de conseguir alguma tentativa de ajuda se você anexar o arquivo Excel com alguns dados na planilha, com o resultado esperado e as explicações.
  9. A fórmula com a função PROCV() colocada em "A" funciona com o arquivo "B" fechado, então uma solução seria colocar a fórmula em uma célula de "A" e depois atribuir o resultado da fórmula à variável. Ex. PROCV() em G1 e resultado_procv = [G1]
  10. Anexe o seu arquivo, e informe com precisão o que você fez na planilha imediatamente antes de ocorrer o erro.
  11. O código que postei responde a questão acima. Para colocar a resposta em A1 da planilha resultado: Sheets("resultado").[A1]=Cells(linA, 1)
  12. Sub teste2() Range("A1:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlBlanks).EntireRow.Delete Columns(2).Delete End Sub
  13. Veja se atende. Sub teste() Dim linB As Long, linA As Long linB = Cells(1, 2).End(xlDown).Row linA = Cells(linB, 1).End(xlUp).Row MsgBox Cells(linA, 1) 'valor da última célula não vazia em A, acima da primeira linha não vazia em B End Sub
  14. Básico: antes de postar você deveria comparar a linha que passei com a linha que você digitou. ElseIf Not Intersect(Target, [Range "A8:A" & [AL3])) Is Nothing Then Faça Copiar/Colar: copie a linha do Post #46 e cole no código em substituição a existente, isso evitará digitar errado a linha que passei.
  15. ElseIf Not Intersect(Target, Range("A8:A" & [AL3])) Is Nothing Then
  16. A sintaxe da linha em que ocorre o erro está correta. Tente apagar e digitar a linha novamente, e se o erro persistir anexe o arquivo aqui.
  17. Coloque este no lugar do anterior. Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$3" Then [A8:B506] = "" ElseIf Not Intersect(Target, [A8:A506]) Is Nothing Then If Target.Value = "Pago" Then Sheets("Registo de horas").Cells(Cells(Target.Row, 4), "Q").Resize(, 2) = Array("Pago", Cells(Target.Row, 2)) ElseIf Target.Value = "Não Pago" Then Sheets("Registo de horas").Cells(Cells(Target.Row, 4), "Q").Resize(, 2) = "" End If End If End Sub
  18. O código só é executado, tanto para Pago como para Não Pago, se as células em A, B e D, mesma linha, estiverem preenchidas. Se ao escrever Pago em A o código está colocando corretamente os dados na planilha destino, então é porque a data na coluna B está preenchida. Por outro lado, se ao colocar Não Pago em A o código não limpa os dados na planilha destino então, possivelmente, é porque não existe uma data em B, ou seja, você limpou a data antes de inserir Não Pago. É assim? Eu coloquei a condição descrita no primeiro item acima, que inclui o preenchimento da coluna D, pois no arquivo que você anexou antes os números eram inseridos manualmente, no entanto, nesse último arquivo vejo que há fórmulas naquela coluna, e isso requer ajustes no código. Antes dos ajustes informe com precisão quais os movimentos que você pretende fazer ao inserir Pago, Não Pago e a data, assim faço os ajustes de uma vez só.
  19. Usei a sua fórmula que está em AF2 e troquei a coluna de retorno de 6 para 4. Em AG2 e arraste para baixo. =SE(J2="";"";PROCV(J2;Dados!C:H;4;0))
  20. @Guto Lima Veja se esta lhe atende. =OU(E(G11>=C$5;G11<=E$5);E(F11>=C$5;F11<=E$5);E(F11<=C$5;G11>=E$5))
  21. Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$3" Then [A8:B506] = "" ElseIf Not Intersect(Target, [A8:B506,D8:D506]) Is Nothing Then If Application.CountA(Union(Cells(Target.Row, 1).Resize(, 2), Cells(Target.Row, 4))) < 3 Then Exit Sub If Cells(Target.Row, 1) = "Pago" Then Sheets("Registo de horas").Cells(Cells(Target.Row, 4), "Q").Resize(, 2) = Array("Pago", Cells(Target.Row, 2)) Else: Sheets("Registo de horas").Cells(Cells(Target.Row, 4), "Q").Resize(, 2) = "" End If End If End Sub

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!