VBA Excel如果单元格值更改在另一列中显示日期无法正常工作

时间:2019-12-12 18:28:50

标签: excel vba

所以,这是我的工作表ibb.co/LZM1b3Z

第一个代码,例如,当我在工作表中的某个地方键入(例如K2)时,单元格a2为“ 123”(例如,“ 123”),则xt“ 123”与A2匹配,在这种情况下,C2将其添加到数量列

代码2:我想要做什么:在“数量列”(C2)中,某些单元格填充为“ 1”,然后在“日期”列(F)中,以“数量”行中的日期显示为“ 1”。如果我手动键入“ 1”而不是通过使用第一个代码搜索条形码,则所述第二个代码才有效。

    Private Sub Worksheet_Change(ByVal target As Range)

    FirstCode target
    SecondCode target

End Sub

Private Sub FirstCode(ByVal target As Range)
  Dim Item As String
  Dim SearchRange As Range
  Dim rFound As Range

  'Don't run the macro if:
  'Target is not a single cell:
  If Target.Cells.Count > 1 Then Exit Sub
  'or Target belongs to the A1.CurrentRegion:
  If Not Intersect(Target, Range("A1").CurrentRegion) Is Nothing Then Exit Sub

  'Avoid the endless loop:
  Application.EnableEvents = False

  'Looks for matches from the here first:
  Set SearchRange = Range("A1:A" & Range("A1").CurrentRegion.Rows.Count)

  Item = Target.Value

  'Clears the Target:
  Target.Value = ""

  If Application.WorksheetFunction.CountIf(SearchRange, Item) > 0 Then
  'There's a match already:
  Set rFound = Columns(1).Find(What:=Item, After:=Cells(1, 1) _
  , LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows _
  , SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
  'Adds one to the Quantity:
  rFound.Offset(0, 2).Value = rFound.Offset(0, 2).Value + 1

  Else

  'Writes the value for the Barcode-list:
  Range("A" & SearchRange.Rows.Count + 1).Value = Item

  'Looks for the match from sheet "Inventory" column A
  With Sheets("Inventory")
  Set rFound = .Columns(1).Find(What:=Item, After:=.Cells(1, 1) _
  , LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows _
  , SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

  On Error GoTo 0

  If Not rFound Is Nothing Then
  'Writes the Product Name and puts 1 to the Quantity column:
  Range("B" & SearchRange.Rows.Count + 1).Value = rFound.Offset(0, 1).Value
  Range("C" & SearchRange.Rows.Count + 1).Value = 1
  End If
  End With
  End If

  'Enable the Events again:
  Application.EnableEvents = True

End Sub

Private Sub SecondCode(ByVal target As Range)
  If Target.Column <> 3 Then Exit Sub
  If Target.Cells.Count > 1 Then Exit Sub
  With Target.Offset(0, 3)
  .Value = Now
  .NumberFormat = "DD/MM/YYYY"
  End With
End Sub

0 个答案:

没有答案
相关问题