EXCEL MACRO: проверьте, отображается ли значение в другом листе - PullRequest
0 голосов
/ 14 ноября 2018

Новичок в этом, поэтому собираюсь просто дать мою проблему и надеяться на некоторую помощь:)

По сути, у меня есть список, и я хочу посмотреть, появится ли он на одном из других листов вместо использования ивернуть строку, зависящую от листа, на котором она находится. Например, псевдокод:

value = "Hi"
If value in sheet 2 Then
  return "Yes"
If value in sheet 3 Then
  return "TDB"
Else
  return " "

Код, который у меня есть до сих пор

Public Function Check(product As String) As String

Dim BLRange As Range
Dim xlCell As Range
Dim BL As Worksheet
Dim TBDRange As Range
Dim TBD As Worksheet
Dim result As String

Set BL = ActiveWorkbook.Worksheets("Sheet2")
Set BLRange = BL.Range("A1:A1000")
Set TBD = ActiveWorkbook.Worksheets("Sheet3")
Set TBDRange = TBD.Range("A1:A1000")

For Each xlCell In BLRange
    If xlCell.Value = product Then
        Check = "Yes"
    End If
Next xlCell

For Each xlCell In TBDRange
    If xlCell.Value = product Then
        Check = "TBD"
    End If
Next xlCell

Check = ""
End Function

Но когда я звоню Check("Hi"), я получаю #VALUE!

Кто-нибудь видел, где я ошибаюсь / получил предложение?

Спасибо

PS отступы испорчены извините

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Попробуйте этот код (уже проверено и работает)

Public Function Check(product As String) As String

Dim BLRange As Range
Dim BL As Worksheet
Dim TBDRange As Range
Dim TBD As Worksheet
Dim result As String

Set BL = ActiveWorkbook.Worksheets("Sheet2")
Set BLRange = BL.Range("A1:A1000")
Set TBD = ActiveWorkbook.Worksheets("Sheet3")
Set TBDRange = TBD.Range("A1:A1000")

Check = "none"

For Each xlCell In BLRange
 If xlCell.Text = product Then
    Check = "Yes"
    GoTo a
 End If
Next xlCell

For Each xlCell In TBDRange
 If xlCell.Text = product Then
    Check = "TBD"
    GoTo a
 End If
Next xlCell

Exit Function

a:


End Function
0 голосов
/ 14 ноября 2018

Вот версия функции, использующая find, как упоминалось @urdearboy ...

Public Function Check(product As String) As String

    Dim BLRange As Range
    Dim TBDRange As Range
    Dim fndRng As Range

    With ActiveWorkbook
        Set BLRange = .Worksheets("Sheet2").Columns("A")
        Set TBDRange = .Worksheets("Sheet3").Columns("A")
    End With

    Set fndRng = BLRange.Find(product)
    If Not fndRng is Nothing Then Check = "Yes": Exit Function

    Set fndRng = TBDRange.Find(product)
    If Not fndRng is Nothing Then Check = "TBD": Exit Function

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