Ir ao conteúdo
  • Cadastre-se

Bruninha - Neo

Membro Júnior
  • Posts

    8
  • Cadastrado em

  • Última visita

Reputação

0
  1. Está aparecendo o seguinte erro: Erro em tempo de execução 1004 O método "Range" do objeto "_Worksheet" falhou. Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect ("123") Dim ColunasC As Range Set ColunasC = Range("C2:C20000") If Not Application.Intersect(ColunasC, Range(Target.Address)) Is Nothing Then linha = Target.Row Range("i" & linha).Value = DateTime.Now End If Range("i" & linha).Select [B]---->>>Aparece erro nesta linha<<<-----[/B] Selection.Locked = True ActiveSheet.Protect ("123"), DrawingObjects:=True, Contents:=True, Scenarios:=True
  2. O caso é que eu preciso bloquear somente a célula onde a data for colocada por isso eu tentei repetir a linha abaixo: Range("i" & linha).Locked = True mas não funcionou... porque qd a planilha for aberta ela estará desbloqueada, só que apos ser preenchida a data, não pode haver alteração manual na data que foi colocada... se você puder ajudar, agradeço.
  3. Tenho a seguinte fórmula em excel no editor do visual basic: Private Sub Worksheet_Change(ByVal Target As Range) Dim ColunasC As Range Set ColunasC = Range("C2:C20000") If Not Application.Intersect(ColunasC, Range(Target.Address)) Is Nothing Then linha = Target.Row Range("i" & linha).Value = DateTime.Now End If End Sub Preciso então, que ao ser preenchida a linha correpondente na coluna i, a mesma seja bloqueada... tentei colocar a instrução abaixo, mas não funcionou. Range("i" & linha).Locked = True Então, como posso fazer isso???
  4. Bom, seguindo a mesma lógica mencionada acima, eu preciso agora que ao invés de colocar a data seja colocado o nome do computador que o usuário que alterar a planilha estiver... Então seguindo a lógica fornecida pelo Flávio Soares tentei fazer da seguinte forma: Private Function GetComputerName(ByVal sBuffer As String, lSize As Long) As Long Dim NameSize As Long Dim X As Long MachineName = Space$(16) NameSize = Len(MachineName) X = GetComputerName(MachineName, NameSize) End Function Private Sub Worksheet_Change(ByVal Target As Range) Dim Colunas As Range Set Colunas = Range("C1:C20000") If Not Application.Intersect(Colunas, Range(Target.Address)) Is Nothing Then linha = Target.Row Range("k" & linha).Value = GetComputerName End If End Sub Porém, não funciona. Se alguém puder dar uma mão, agradeço. valeu
  5. Noooossaa!! desculpa!! funcionou sim!!!perfeito!!! Muuito obrigada!!!
  6. Tentei fazer como você falou... mas não está funcionando... segue uma imagem da planilha na qual estou tentado fazer esta fórmula....se puder dar uma olhada, eu agradeço! (tentei enviar a planilha mas o arquivo não foi...) OBS: a digitar na coluna c, aparece a hora do sistema na coluna i... só que eu usar a função Agora() do excel, quando a hora do sistema mudar, muda a hora que foi colocada na coluna também... então montamos o código acima, so que ele só executa a primeira linha da tabela....coloquei o seu código mas não acontece nada e ele fica pedindo pra eu dar um nome para a macro, só que não pode ser uma macro porque o usuário teria que habilitar ela toda hora e mandar executar...tem que ser automatico.. valeu!
  7. Olá, procurei no fórum algum código para esta solução mas não encontrei. O que precisamos é o seguinte: Quando for digitado um número na célula C5, aparece automaticamente na célula i5 a data e a hora do sistema. Porém, eu preciso que em cada célula da coluna c e da coluna i isso aconteça, ou pelo menos até a célula 300... rsrsr. Pra que eu não precise fazer fórmula por fórmula acho q teria q desenvolver um loop, mas todos os códigos que eu tentei falharam... loop next... next célula.... o que eu posso fazer? segue abaixo o código da data que eu mencionei acima: Private Sub Worksheet_Change(ByVal Target As Range) If ((Target.Row = Range("C5").Row And Target.Column = Range("C5").Column)) Then Range("i5").Value = DateTime.Now End If If ((Target.Row = Range("m5").Row And Target.Column = Range("m5").Column)) Then Range("l5").Value = DateTime.Now End If If ((Target.Row = Range("o5").Row And Target.Column = Range("o5").Column)) Then Range("n5").Value = DateTime.Now End If If ((Target.Row = Range("s5").Row And Target.Column = Range("s5").Column)) Then Range("r5").Value = DateTime.Now End If If ((Target.Row = Range("u5").Row And Target.Column = Range("u5").Column)) Then Range("t5").Value = DateTime.Now 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...