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ď č. 1Nemôž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ť.