/ / Worksheet_change não parece acionar - excel, vba, excel-vba, macros

A planilha_change parece não disparar - excel, vba, excel-vba, macros

Eu tenho uma macro instalada e funcionando que classifica um pivôtabela, copia um intervalo de células da tabela e, em seguida, cola-as em uma segunda planilha. Para ser honesto, com o que estou achando do VBA agora, estou muito feliz apenas com essa façanha. No entanto, tenho mais coisas que quero fazer.

O que eu quero que aconteça é o seguinte:A macro que colei dados nas primeiras células vazias da coluna A. Quando isso acontecer, quero que a macro insira a data de hoje (de preferência de uma maneira que a torne permanente e não mude para a data de amanhã) em a mesma linha na coluna C e o texto "IV020" na coluna D.

Na Planilha 9, tenho o seguinte código (principalmente tirado de postagens aqui):

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim aCell As Range

On Error GoTo Whoa

Application.EnableEvents = False

If Not Intersect(Target, Columns(1)) Is Nothing Then
If Not Target.Columns.Count > 1 Then
For Each aCell In Target
If aCell.Value <> "" And aCell.Offset(0, 2).NumberFormat = "" Then
aCell.Offset(0, 2).Value = "=TODAY()"
aCell.Offset(0, 3).Value = "IV020"
End If
Next
Else
MsgBox "Please paste in 1 Column"
End If
End If

Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub

No entanto, quando as coisas são coladas ou inseridas manualmente na coluna A, nada acontece.

Respostas:

0 para resposta № 1

Você não pode ter um Propriedade Range.NumberFormat essa é uma string de comprimento zero. Mesmo se você tentar inserir um manualmente, ele se redefinirá para Geral.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns(1)) Is Nothing Then
"don"t do things until you have to
On Error GoTo Whoa
Application.EnableEvents = False
Dim aCell As Range
"this processes all of the cells that were changes in column A
For Each aCell In Intersect(Target, Columns(1))
"If aCell.Value <> "" And aCell.Offset(0, 2).NumberFormat = "" Then
If aCell.Value <> "" Then
aCell.Offset(0, 2).Value = Date   "possibly Now but likely not "=TODAY()"
aCell.Offset(0, 3).Value = "IV020"
End If
Next
End If

Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub

Fiz algumas pequenas alterações; você terá que decidir o que deseja fazer sobre o problema .NumberFormat.