Снятие выделения ячеек при сканировании следующего штрих-кода - PullRequest
0 голосов
/ 19 июня 2020

Я искал способ добавить систему поиска штрих-кода в некоторые инвентарные листы в Excel. Посмотрев на этот форум, я нашел примерно то решение, которое искал. Я пытался понять, как добавить функцию, но ничего не добился (очень мало опыта программирования). Лист переходит к соответствующей ячейке и выделяется, что необходимо, так как он не переводит ячейку в верхнюю часть представления листа, код просто, кажется, гарантирует, что нужная ячейка отображается в любом месте на листе, пока Это здесь. Таким образом, выделение помогает быстро найти нужную ячейку на странице, но когда я go сканировал и нашел другой штрих-код, все предыдущие отсканированные ячейки остаются выделенными. Пока я просто снимаю их выделение вручную на главной вкладке, но мне интересно, можно ли что-нибудь добавить в код, чтобы убрать выделение ячеек при сканировании следующего штрих-кода? Кроме того, я использую шаблон Excel для инвентаризации, который выделяет строки ячеек, если необходимо переупорядочить элемент. Не уверен, сколько проблем это добавляет.

Заранее спасибо, если у кого-то есть идеи.

Вот код, который я нашел на форуме, он тот же, за исключением того, что я только что изменил значение цвета (море ярко-желтого было слишком много, чтобы смотреть на него после сотни строк):

Private Sub CommandButton1_Click()

Dim code As Variant
Dim matchedCell As Range

code = InputBox("Please scan a barcode and hit enter if you need to")

Set matchedCell = Range("C2:C100").Find(what:=code, LookIn:=xlValues, _
                  lookat:=xlWhole, MatchCase:=True)

If Not matchedCell Is Nothing Then
    With matchedCell
        Application.Goto .Cells(1)
        .Resize(1, 10).Interior.ColorIndex = 20
    End With
Else
    MsgBox "Barcode Not Found"
End If

End Sub

(исходный код на форуме для кода выше: Переход к ячейке Excel после считывания штрих-кода чтобы увидеть, есть ли совпадение )

Перед Изображение выделения

После изображения выделения

1 Ответ

0 голосов
/ 20 июня 2020

Если я правильно понял, решить вашу проблему действительно просто: просто восстановите цвет до вашего основного кода.

Например:

  1. Нажмите на свой лист, чтобы активировать его

  2. Запустите этот код, чтобы проверить код цвета:

      Sub getColor()
    
          MsgBox ActiveSheet.Range("C4").Interior.color 
    
      End Sub
    
  3. Запишите свой номер цвета

  4. Измените код макроса

    Private Sub CommandButton1_Click()
    
     Dim ws As Worksheet
     Set ws = ThisWorkbook.Sheets("Inventory List")
    
     Dim rangeToLook As Range
     Set rangeToLook = ws.Range("C2:C100")
    
     Dim wholeRange As Range
     Set wholeRange = rangeToLook.Resize(, 10)
    
     ' change 14408667 to yours grey color code here
     wholeRange.Cells.Interior.color = 14408667
    
     Dim code As Variant    
         code = InputBox("Please scan a barcode and hit enter if you need to")
    
     Dim matchedCell As Range
     Set matchedCell = rangeToLook.Find(what:=code, LookIn:=xlValues, _
                       lookat:=xlWhole, MatchCase:=True)
    
         If Not matchedCell Is Nothing Then
             With matchedCell
                 Application.Goto .Cells(1)
                 .Resize(1, 10).Interior.ColorIndex = 20
             End With
         Else
             MsgBox "Barcode Not Found"
         End If
    
     End Sub
    
...