Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
Excel VBA新手,我正在尝试创建条件(If或Then)代码_Excel_Vba_If Statement_Copy_Paste - Fatal编程技术网

Excel VBA新手,我正在尝试创建条件(If或Then)代码

Excel VBA新手,我正在尝试创建条件(If或Then)代码,excel,vba,if-statement,copy,paste,Excel,Vba,If Statement,Copy,Paste,在Excel文档中,我试图复制整行值,并根据一个特定列中的两个条件保留格式和公式。我对这一点还不熟悉,可能最终会弄明白我在做什么,但投入的时间有限 下面是我尝试并正在努力复制L列中符合条件的值(粗体文本或黄色突出显示),但它不会保留格式,也不会复制整行值和公式 Sub Button1_Click() Dim myrange As Range Dim startrow As Long Dim workrange As Range startrow = 2 Set workrange = She

在Excel文档中,我试图复制整行值,并根据一个特定列中的两个条件保留格式和公式。我对这一点还不熟悉,可能最终会弄明白我在做什么,但投入的时间有限

下面是我尝试并正在努力复制L列中符合条件的值(粗体文本或黄色突出显示),但它不会保留格式,也不会复制整行值和公式

Sub Button1_Click()

Dim myrange As Range
Dim startrow As Long
Dim workrange As Range

startrow = 2
Set workrange = Sheets("Full").Range("L2: L424")
For Each myrange In workrange
    If myrange.Font.Bold Or myrange.Interior.ColorIndex = 6 Then
        Sheets("Test").Cells(startrow, 12) = myrange.Value
        startrow = startrow + 1

End If
Next

End Sub
好的,谢谢你们。我快到了。我现在的代码是:

Sub Button1_Click()

Dim myrange As Range
Dim startrow As Long
Dim workrange As Range

startrow = 1
Set workrange = Sheets("Full").Range("L1: L424")
For Each myrange In workrange
    If myrange.Font.Bold Or myrange.Interior.ColorIndex = 6 Then
        myrange.Resize(1, 98).Copy Sheets("Test").Cells(startrow, 12)
        startrow = startrow + 1

End If
Next

End Sub

但我缺少A-K(1-11)列。我的条件是基于第12(L)列中的“值”(粗体字体或黄色突出显示),但我似乎只能发布L-CT行中的单元格值(带格式和公式)。感谢您的帮助

正如BigBen正确指出的,您需要复制单元格以保留所有格式和公式

Sub Button1_Click()

Dim myrange As Range
Dim startrow As Long
Dim workrange As Range

startrow = 2
Set workrange = Sheets("Full").Range("L2: L424")
For Each myrange In workrange
    If myrange.Font.Bold Or myrange.Interior.ColorIndex = 6 Then
        Sheets("Test").Cells(startrow, 12) = myrange.Value
        startrow = startrow + 1

End If
Next

End Sub
编辑:是否确实要将复制的范围粘贴到图纸测试的第12列?如果是这样的话,我们走吧

Sub Button1_Click()

Dim myrange As Range
Dim startrow As Long
Dim workrange As Range
Dim wksFull As Worksheet
Dim wksTest As Worksheet

    Set wksFull = Worksheets("Full")
    Set wksTest = Worksheets("Test")
    With wksFull
        startrow = 1
        Set workrange = .Range("L1: L424")
        For Each myrange In workrange
            If myrange.Font.Bold Or myrange.Interior.ColorIndex = 6 Then
                .Range(.Cells(myrange.Row, 1), .Cells(myrange.Row, 98)).Copy _
                    wksTest.Cells(startrow, 12)
                startrow = startrow + 1
        End If
        Next
    End With
End Sub

您需要使用
复制
。明白-谢谢!我已经取得了一些进展,但仍然卡住了,并编辑了我原来的问题。说到这个,我是个新手。非常感谢!由于您编辑的代码,我已经取得了一些进展,但我仍然被卡住了,并且编辑了我的原始问题。我是新手,不是。第12列是满足条件的地方,但我希望粘贴的行从(“A”,1)开始。将复制目标更改为:wksTest.Cells(startrow,1)即可完成此操作。非常感谢你!