尝试修改符合多个条件的每一行

时间:2019-07-24 08:08:05

标签: excel vba

我正在设计项目的人员配备时间表。员工每天被分配到不同的项目。出于计划目的,我们希望能够同时具有“每个项目的人员”视图和“每个人员的项目”视图。这导致我创建的数据集基本上由每天/职员组合组成的一个条目组成。大约有十几名员工和365天的时间,这是一个冗长的列表,需要手动修改。

基本上,这是数据库: enter image description here

现在,真实的内容是大约5000行,这使得更改任何内容成为一个大型CTRL + F聚会。 go宏以添加人员计划。

在另一张纸上,我为数据输入建立了一个简单的表格。 人们选择一名职员,输入项目名称,开始日期和结束日期。然后,应使用该宏查找与工作人员和所选日期范围匹配的行,并将数据集中的项目更改为输入所提供的任何内容。

到目前为止,我已经建立了数据集,并开始研究代码以找到正确的行。我认为首先编写一些代码将每个人的12月24日设置为“圣诞节”是最简单的。 为了使自己更轻松,我认为最好将其涂成红色。

但是,这已经给我一个错误1004:对象定义的错误。

Sub AddHoliday()

Dim i As Long

For i = 1 To Sheets("2019-2020").Rows.Count

Next i

If Sheets("2019-2020").Cells(i, 1).Value = "24-12-2019" Then
    Sheets("2019-2020").Cells(i, 1).Font.Color = vbRed
End If


End Sub

我本来希望每个等于12月24日的日期都变成红色。 但是,我已经在IF语句的第一行收到了1004对象定义的错误。

1 个答案:

答案 0 :(得分:1)

问题:

  • 如果应该在For Loop内部
  • 日期应输入为数字,以确保24-12-2019被Excel识别为43823
  • 循环正在所有行上运行,应该在工作表中的活动行上运行

使用:

Sub AddHoliday()

Dim i As Long

With Sheets("2019-2020")

    For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).row

        If .Cells(i, 1).Value = 43823 Then ' 24-12-2019
           .Cells(i, 1).Font.Color = vbRed
        End If

    Next i

End With

End Sub