Worksheet_change показывает дату как ЛОЖЬ - PullRequest
0 голосов
/ 16 января 2020

enter image description here

Это моя рабочая книга, поэтому у меня есть код, я использую сканер для сканирования штрих-кодов. Когда я сканирую штрих-код, он добавляет «1» к количеству (столбец c), я также хочу записать дату в столбце F, почти все работает нормально, за исключением того, что он не печатает дату, он набирает «ЛОЖЬ». Я пытался с макросом +, если формула (если cellrange = 1, = (сейчас), ""). Это работает, но, к сожалению, я использую рабочую книгу в общем режиме, и вы не можете использовать макросы в общем режиме, и vba - мое последнее решение.

Я новичок в VBA.

Private Sub Worksheet_Change(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
        rFound.Offset(0, 5).Value = rFound.Offset(0, 5).Value2 = Now



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

Le:

Private Sub Worksheet_change(ByVal Target As Range)

Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("C:C"), Target)
xOffsetColumn = 3
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

1 Ответ

0 голосов
/ 16 января 2020

Пожалуйста, замените эту строку:

rFound.Offset(0, 5).Value = rFound.Offset(0, 5).Value2 = Now

на эту:

rFound.Offset(0, 5).Value = Format(Now, "dd-mm-yyyy hh:mm:ss")

Затем прокомментируйте строку Worksheet_change:

codetwo Target

и сделать то же самое со всеми строками Module module

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...