【发布时间】:2018-12-11 19:31:33
【问题描述】:
我已经尝试了一段时间,但无法找出解决此问题的 for 代码。
我在 sheet1 中有一个有两列的表,在一个列中我有职位,在下一个我有可以在这些职位上工作的人。
在 sheet2 中,我有所有职位的列表,当您选择 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 行。我是否以某种错误的方式使用它?
【问题讨论】:
-
为什么
If IsHighlighted(.L8) Then多了一个句号?另外,如果您打算在For循环中将其用作可迭代变量,那么设置L8有什么意义? -
@dwirony 好吧,我想遍历 L8 范围的每个单元格,如果有任何其他方法可以实现,我很乐意实现。额外的时间是我的错误,我会纠正它。
-
那应该是
For Each cell in L8- 还有什么是BidL8?您应该将Option Explicit放在模块的顶部,并确保声明了所有变量。 -
@dwirony BidL8 是问题中所说的 sheet1 中的表格。该表有针对员工的位置。
-
这可能是你认为的那样,但现在在你当前的代码中
BidL8什么都不是——你必须声明它并且Set它是什么。