I IF 的 VBA 复制单元格

标签 vba excel

我正在努力学习 VBA 但仍然很粗糙

我正在尝试创建一个宏,该宏将为分配给另一个工作簿中的员工的任务编译报告。我没有使用所有的行。

问题是宏正在返回所有任务,而不仅仅是分配给指定员工的任务。

我认为我的问题发生是因为我同时使用了 For 和 If 语句。

谢谢您的帮助。

Option Explicit
Sub Import_Open_Jobs()
Dim DestinWB As Workbook: Set DestinWB = ThisWorkbook
Dim SourceWB As Workbook: Set SourceWB = Workbooks.Open(Filename:="C:\Users\...\Open Tasks    Report.xlsx")
Dim ci As Integer
DestinWB.Activate
    Sheets("Open Tasks").Range("A3").Select
        Do Until ActiveCell.Value = ""
            Intersect(Range("A:P"), ActiveCell.EntireRow).Clear
        ActiveCell.Offset(1, 0).Select
        Loop

SourceWB.Activate
SourceWB.Sheets("Task_List").Range("A2").Select
Do Until ActiveCell.Value = ""

'F1 contains the name of the employee that the report is created for.
    If Cells(ActiveCell.Row, 5).Value = DestinWB.Sheets("Open Tasks").Range("F1") Then 


        For ci = 3 To 10000
            DestinWB.Sheets("Open Tasks").Cells(ci, 1).Value = ActiveCell.Value
            If ActiveCell.Value = "" Then Exit For
            DestinWB.Sheets("Open Tasks").Cells(ci, 2).Value = Cells(ActiveCell.Row, 2)
            DestinWB.Sheets("Open Tasks").Cells(ci, 3).Value = Cells(ActiveCell.Row, 8)
            DestinWB.Sheets("Open Tasks").Cells(ci, 4).Value = Cells(ActiveCell.Row, 9)
            DestinWB.Sheets("Open Tasks").Cells(ci, 5).Value = Cells(ActiveCell.Row, 15)
            DestinWB.Sheets("Open Tasks").Cells(ci, 6).Value = Cells(ActiveCell.Row, 22)
            DestinWB.Sheets("Open Tasks").Cells(ci, 7).Value = Cells(ActiveCell.Row, 23)
            DestinWB.Sheets("Open Tasks").Cells(ci, 8).Value = Cells(ActiveCell.Row, 24)
            DestinWB.Sheets("Open Tasks").Cells(ci, 9).FormulaR1C1 = "=IF(RC[-2]="""",""NA"",IF(RC[-1]="""",""NA"",NETWORKDAYS(RC[-2],RC[-1])))"
            DestinWB.Sheets("Open Tasks").Cells(ci, 10).FormulaR1C1 = "=IF(RC[-3]="""",""NA"",IF(RC[-2]="""",""NA"",NETWORKDAYS(RC[-3],R1C4,)))"
            DestinWB.Sheets("Open Tasks").Cells(ci, 11).Value = Cells(ActiveCell.Row, 27)
            DestinWB.Sheets("Open Tasks").Cells(ci, 12).Value = Cells(ActiveCell.Row, 16)
            DestinWB.Sheets("Open Tasks").Cells(ci, 13).Value = Cells(ActiveCell.Row, 21)
            DestinWB.Sheets("Open Tasks").Cells(ci, 14).Value = Cells(ActiveCell.Row, 18)
            DestinWB.Sheets("Open Tasks").Cells(ci, 15).Value = Cells(ActiveCell.Row, 19)
            DestinWB.Sheets("Open Tasks").Cells(ci, 16).Value = Cells(ActiveCell.Row, 20)
            ActiveCell.Offset(1, 0).Select
        Next ci
    Else
            ActiveCell.Offset(1, 0).Select
    End If

Loop
SourceWB.Close
DestinWB.Activate
Range("D1").Value = Format(Now(), "MM-DD-YYYY")
Columns("F:H").Select
    Selection.NumberFormat = "m/d/yyyy"

End Sub

最佳答案

我将 IF 放在 For 循环内,而不是放在外面。

如果我理解正确,您想遍历所有单元格,如果条件匹配,请将其带过来。

如果第一个单元格的值匹配,您当前正在做什么,请输入下一个 10000

关于I IF 的 VBA 复制单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26997667/

相关文章:

使用 Open XML SDK 保护 Excel 文件密码

loops - Else If 是否为 FileExists()

vba - 我需要一个 VBA 代码来计算从 ss 到 ss 的行数,返回该数字并复制并粘贴该行和所有其他列

arrays - 对具有相同范围的多张工作表进行排序

excel - 从不同的工作表中获取列数据并将其作为MainSheet中的行数据

vba - CheckSpelling 函数中的类型不匹配

c# 如何访问打开的 Excel 文件?

vba - 更改Excel中多个选项卡的颜色

c# - 如何以编程方式将 Excel Power 查询中的连接字符串更改为 SQL Server?

javascript - SheetJS xlsx-style需要excel中的单元格样式