Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 基于特定IF语句复制所有列_Vba_Excel - Fatal编程技术网

Vba 基于特定IF语句复制所有列

Vba 基于特定IF语句复制所有列,vba,excel,Vba,Excel,我对调试器中的这行代码有问题: Sheets("DataDetail").Range(Cells(2, 80)).Copy 我试图根据用户“Olive Thompson”是否在DataDetail的第1列复制DataDetail(工作表)中的所有列。但是,它不喜欢我的专栏。如果可能的话,我希望列单元格的范围是动态的 下面是代码 Sub copycolumns() Dim i As Variant Dim lastrow As Long, erow As Long Applicati

我对调试器中的这行代码有问题:

Sheets("DataDetail").Range(Cells(2, 80)).Copy
我试图根据用户“Olive Thompson”是否在DataDetail的第1列复制DataDetail(工作表)中的所有列。但是,它不喜欢我的专栏。如果可能的话,我希望列单元格的范围是动态的

下面是代码

Sub copycolumns()
  Dim i As Variant
  Dim lastrow As Long, erow As Long
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Sheets("TRACKERdetail").Rows("2:" & Rows.Count).ClearContents
  lastrow = Sheets("DataDetail").Cells(Rows.Count, 2).End(xlUp).Row
  For i = 2 To lastrow
    If Sheets("DataDetail").Cells(i, 1) = "Oliver Thompson" Then
      Sheets("DataDetail").Range(Cells(2, 80)).Copy 
      erow = Sheets("TRACKERdetail").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
      Sheets("DataDetail").Paste Destination:=Worksheets("TRACKERdetail").Cells(erow, 1)
    End If
  Next i
  Application.CutCopyMode = False
  Sheets("TRACKERdetail").Columns().AutoFit
  Range("A1").Select
  Application.EnableEvents = True
  Application.ScreenUpdating = True
  Dayleftsort
End Sub 

Sub Dayleftsort() 
  ' 
  ' Dayleftsort Macro 
  ' sorts the tracker tab by days left 
  ' 
  ' Keyboard Shortcut: Ctrl+d 
  ' 
  Cells.Select
  ActiveWorkbook.Worksheets("TRACKERdetail").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("TRACKERdetail").Sort.SortFields.Add Key:=Range("N2:N1000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
  With ActiveWorkbook.Worksheets("TRACKERdetail").Sort 
    .SetRange Range("A1:AF1000") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
  End With 
End Sub

问题是什么?工作表(“DataDetail”).Range(单元格(2,80)).Copy是固定的,您需要为行号添加行计数器。更改
工作表(“DataDetail”).Range(单元格(2,80)).Copy
工作表(“DataDetail”).Range(工作表(“DataDetail”).Cells(2,80)).Copy
甚至不需要指定范围,如果您只选择单个单元格,例如
工作表(“DataDetail”)。单元格(2,80)。复制
(请尝试格式化您的代码示例)您实际要复制的范围是什么
CB2
哪个是
单元格(2,80)引用了或您正在尝试复制
B2:CB2`?我正在尝试复制整个工作表(最后一列和最后一行)。但我必须能够在不创建新选项卡的情况下执行此操作,因为我在目标工作表中有条件格式