Сопоставьте значение из таблицы с раскрывающимся списком - PullRequest
0 голосов
/ 11 декабря 2018

Я уже некоторое время пытаюсь это сделать и не могу определить код for для этой проблемы.У меня есть таблица на листе 1 с двумя столбцами, в одном столбце у меня есть должности, в следующем у меня есть люди, которые могут работать на этих должностях.На листе 2 у меня есть список всех должностей, и те, которые должны быть укомплектованы, выделены при выборе SKU, и две колонки, кроме того, это раскрывающийся список сотрудников.На этом же листе также есть диапазон, в котором отображаются сотрудники, которые не работают в этот день.Пытался реализовать @BruceWayne, ответьте:

  Option Explicit
'use a constant to store the highlight color...
Const HIGHLIGHT_COLOR = 9894500 'RGB(100, 250, 150)

Sub AssignBided()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim cel1 As range
Dim cel2 As range
Dim line8 As range
Dim Offemp As range
Dim BidL8 As range
Dim BidL8E As range
Dim coresVal As String

Set ws1 = Worksheets("OT_Table")
Set ws2 = Worksheets("Monday")
Set line8 = ws2.range("Line8_Hilight_Mon")
Set Offemp = ws2.range("Off_Mon")
Set BidL8 = ws1.range("BidedL8")
Set BidL8E = ws1.range("BidedL8_E")

For Each cel2 In BidL8E
    For Each cel1 In line8
        If IsHighlighted(cel1) Then
            If Application.WorksheetFunction.CountIf(Offemp, cel2.Value) > 0 Then
                coresVal = Evaluate("Index(" & BidL8E.Address & "),MATCH(" & cel1.Validation & "," & BidL8.Address & ",0))")
                Debug.Print coresVal
                cel1.Offset(0, 2).Value = coresVal
            End If
        End If
    Next cel1
Next cel2
End Sub

'Is a cell highlighted? EDIT: changed the function name to IsHighlighted
Function IsHighlighted(c As range)
    IsHighlighted = (c.Interior.Color = HIGHLIGHT_COLOR)
End Function

Этот код выдает мне эту ошибку: объект не поддерживает это свойство или метод.Он выделяет линию evaluate.Я использую это каким-то неправильным образом?

1 Ответ

0 голосов
/ 12 декабря 2018

Из комментариев я думаю, что это то, что вы пытаетесь сделать.
(Я переименовал некоторые переменные, чтобы их было немного легче понять. Также, при необходимости, настройте именованные диапазоны. Возможно, они не все включенылист "OT_Table", который я предположил. Это было не ясно.)

Sub AssignBided()
Dim ws As Worksheet
Set ws = Worksheets("OT_Table")
Dim cel As Range

Dim line8 As Range
Set line8 = ws.Range("Line8_Highlight_Mon")

Dim Offemp As Range
Set Offemp = ws.Range("Scheduled_Off")

Dim BidL8 As Range
Set BidL8 = ws.Range("BidedL8_T")

Dim coresVal As String
For Each cel In line8
    ' cel.Select
    If IsHighlighted(cel) Then
        If Application.WorksheetFunction.CountIf(Offemp, cel.Value) > 0 Then
            coresVal = Evaluate("INDEX(OFFSET(" & BidL8.Address & ",,2),MATCH(" & _
                cel.Value & "," & BidL8.Address & ",0))")
            Debug.Print coresVal
            cel.Offset(0, 2).Value = coresVal
        End If
    End If
Next cel

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