By jeffw söndagen den 18 december 2022
svar 2
Gillar 0
Visningar 4.8K
Röster 0
Jag har kopierat VBA för att kopiera data från cell till samma rad i en annan kolumn och ändrat den så att jag kan ändra en cell i kolumn F och spara värdet i kolumn E, men när jag försöker det händer ingenting. Kan någon berätta för mig vad jag gör för fel? Jag skulle också vilja placera en datumstämpel i kolumn G när jag gör ändringen.

Jag hoppades att jag också skulle kunna göra samma sak när jag ändrar en cell i kolumn I för att spara den i kolumn H och datumstämpla ändringen i kolumn J.

All hjälp skulle uppskattas mycket.


Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic som ny ordbok
Privata delarkivsförändring (ByVal-mål som område)
Dim I As Long
Dim xCell As Range
Dim xDCell As Range
Dim xHeader som sträng
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Föregående värde :"
x = xDic.Keys
För I = 0 Till UBound(xDic.Keys)
Ställ in xCell = Range(xDic.Keys(I))
Ställ in xDCell = Cells(xCell.Row, 5)
xDCell.Value = ""
xDCell.Value = xDic.Items(I)
Nästa
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
Vid fel GoTo Label1
Om Target.Count > 1 Avsluta Sub
Application.EnableEvents = False
Ställ in xDependRg = Target.Dependents
Om xDependRg är ingenting, gå till etikett1
Om inte xDependRg är ingenting då
Ange xDependRg = Intersect(xDependRg, Range("F:F"))
End If
Etikett 1:
Set xRg = Intersect(Target, Range("F:F"))
Om (Not xRg Is Nothing) Och (Not xDependRg Is Nothing) Då
Ställ in xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) Och (Not xDependRg Is Nothing) Then
Ställ in xChangeRg = xDependRg
ElseIf (Inte xRg Är Ingenting) Och (xDependRg Är Ingenting) Då
Ställ in xChangeRg = xRg
annars
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
För I = 1 Till xChangeRg.Areas.Count
Ställ in xRgArea = xChangeRg.Areas(I)
För J = 1 Till xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Formel
Nästa
Nästa
Ställ in xChangeRg = Ingenting
Ställ in xRg = Ingenting
Ställ in xDependRg = Ingenting
Application.EnableEvents = True
End Sub
UPPDATERING

VBA fungerar! Se koden nedan. Jag behöver bara hjälp med att ändra det så att när jag ändrar en cell i kolumn I sparas värdet i kolumn H.


Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic som ny ordbok
Privata delarkivsförändring (ByVal-mål som område)
Dim I As Long
Dim xCell As Range
Dim xDCell As Range
Dim xHeader som sträng
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Föregående värde :"
x = xDic.Keys
För I = 0 Till UBound(xDic.Keys)
Ställ in xCell = Range(xDic.Keys(I))
Ställ in xDCell = Cells(xCell.Row, 5)
xDCell.Value = ""
xDCell.Value = xDic.Items(I)
Nästa

Om Target.Column = 6 Då
Application.EnableEvents = False
Cells(Target.Row, 7).Value = Datum
Application.EnableEvents = True
End If

Om Target.Column = 9 Då
Application.EnableEvents = False
Cells(Target.Row, 10).Value = Datum
Application.EnableEvents = True
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
Vid fel GoTo Label1
Om Target.Count > 1 Avsluta Sub
Application.EnableEvents = False
Ställ in xDependRg = Target.Dependents
Om xDependRg är ingenting, gå till etikett1
Om inte xDependRg är ingenting då
Ange xDependRg = Intersect(xDependRg, Range("F:F"))
End If
Etikett 1:
Set xRg = Intersect(Target, Range("F:F"))
Om (Not xRg Is Nothing) Och (Not xDependRg Is Nothing) Då
Ställ in xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) Och (Not xDependRg Is Nothing) Then
Ställ in xChangeRg = xDependRg
ElseIf (Inte xRg Är Ingenting) Och (xDependRg Är Ingenting) Då
Ställ in xChangeRg = xRg
annars
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
För I = 1 Till xChangeRg.Areas.Count
Ställ in xRgArea = xChangeRg.Areas(I)
För J = 1 Till xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Formel
Nästa
Nästa
Ställ in xChangeRg = Ingenting
Ställ in xRg = Ingenting
Ställ in xDependRg = Ingenting

Application.EnableEvents = True
End Sub
·
1 år sedan
·
0 Likes
·
0 Röster
·
0 Kommentarer
·
Bara för att förtydliga, detta skulle vara ett tillägg till vad den redan gör. Jag vill kunna spåra ändringar som gjorts i både kolumn F OCH kolumn I. Ursäkta förvirringen.
·
1 år sedan
·
0 Likes
·
0 Röster
·
0 Kommentarer
·
Visa hela inlägget