/ / Zdá sa, že sa nespustí / Worksheet_change - Excel, VBA, Excel-VBA, makrá

Nezdá sa, že by Worksheet_change spustil - makra Excel, VBA, Excel Excel

Mám spustené makro, ktoré triedi pivottabuľka, skopíruje celý rad buniek z tabuľky a potom ich prilepí do druhého hárka. Úprimne povedané, s tým, kde momentálne pracujem s VBA, som celkom spokojný so samotným týmto počinom. Napriek tomu chcem urobiť viac vecí.

Chcem sa stať takto: Makro, ktoré mám, prilepí údaje do prvých prázdnych buniek v stĺpci A. Keď sa to stane, chcem, aby makro zadalo dnešný dátum (najlepšie takým spôsobom, ktorý ho urobí trvalým a nezmení sa na zajtrajší dátum zajtra) v ten istý riadok v stĺpci C a text „IV020“ do stĺpca D.

V Sheet9 mám nasledujúci kód (hlavne prevzatý z príspevkov tu):

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

Keď sa však veci vložia alebo zadajú ručne do stĺpca A, nič sa nestane.

odpovede:

0 pre odpoveď č. 1

Nemôžete mať Vlastnosť Range.NumberFormat to je reťazec s nulovou dĺžkou. Aj keby ste sa pokúsili vložiť jeden ručne, obnovilo by sa to sám všeobecný.

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

Urobil som niekoľko menších zmien; budete sa musieť rozhodnúť, čo chcete v otázke .NumberFormat urobiť.