Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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仅复制值_Vba_Excel - Fatal编程技术网

如何使用VBA仅复制值

如何使用VBA仅复制值,vba,excel,Vba,Excel,我只需要将没有公式的值从工作表复制到另一个工作表。以下代码不复制,但仅使用公式。我尝试了一些在这个网站上提出的解决方案,但他们给了我错误 For i = 2 To LastRow 'sheet to copy from With Worksheets("Hoist") 'check column H value before copying If .Cells(i, 8).Value >= -90 _ And CStr(.Cells

我只需要将没有公式的值从工作表复制到另一个工作表。以下代码不复制,但仅使用公式。我尝试了一些在这个网站上提出的解决方案,但他们给了我错误

For i = 2 To LastRow
    'sheet to copy from
   With Worksheets("Hoist")
        'check column H value before copying
       If .Cells(i, 8).Value >= -90 _
       And CStr(.Cells(i, 9).Value) <> "Approved" _
       And CStr(.Cells(i, 9).Value) <> "" _
       And CStr(.Cells(i, 10).Value) = "" Then
            'copy row to "display" sheet
           .Rows(i).Copy Destination:=Worksheets("display").Range("A" & j)
           j = j + 1
       End If
   End With
Next i
i=2至最后一行的

'要从中复制的工作表
带工作表(“起重机”)
'复制前检查H列的值
If.单元格(i,8).值>=-90_
和CStr(.Cells(i,9).值)“批准”_
和CStr(.Cells(i,9).Value)”_
和CStr(.Cells(i,10).Value)=“然后
'将行复制到“显示”工作表
.行(i).复制目标:=工作表(“显示”).范围(“A”和“j”)
j=j+1
如果结束
以
接下来我

尝试更改此行:

.Rows(i).Copy Destination:=Worksheets("display").Range("A" & j)
为此:

.Rows(i).Copy
Worksheets("display").Range("A" & j).PasteSpecial xlPasteValues
但是,这会删除所有格式设置。要包含格式,您需要添加另一行,如:

Worksheets("display").Range("A" & j).PasteSpecial xlPasteFormats

另一个选项是输入一个工作列并使用
AutoFilter
避免循环

  • 在a列中插入一列
  • formuka工作列为
    =和(I2>-90,和(J2“”,J2“已批准”),K2=“”)
  • 筛选并复制真实行
  • 删除工作列A
代码

Sub Recut()
将ws设置为工作表
变暗rng1 As范围
设置ws=板材(“起重机”)
ws.AutoFilterMode=False
设置rng1=范围([h2],单元格(行数,“H”)。结束(xlUp))
ws.Columns(1.Columns.Insert)
rng1.Offset(0,-8).FormulaR1C1=“=和(RC[8]>-90,和(RC[9]”,RC[9]“批准”)、RC[10]=“批准”)
使用rng1.Offset(-1,-8)。调整大小(rng1.Rows.Count+1,1)。EntireRow
.自动筛选字段:=1,标准1:=真
.复印页(“显示”).范围(“A1”)
表格(“显示”)。栏(“A”)。删除
以
ws.Columns(1).删除
ws.AutoFilterMode=False
端接头
Sub Recut()
Dim ws As Worksheet
Dim rng1 As Range

Set ws = Sheets("Hoist")
ws.AutoFilterMode = False
Set rng1 = Range([h2], Cells(Rows.Count, "H").End(xlUp))

ws.Columns(1).Columns.Insert
rng1.Offset(0, -8).FormulaR1C1 = "=AND(RC[8]>-90,AND(RC[9]<>"""",RC[9]<>""Approved""),RC[10]="""")"

With rng1.Offset(-1, -8).Resize(rng1.Rows.Count + 1, 1).EntireRow
    .AutoFilter Field:=1, Criteria1:="TRUE"
    .Copy Sheets("display").Range("A1")
    Sheets("display").Columns("A").Delete
End With

ws.Columns(1).Delete
ws.AutoFilterMode = False

End Sub