【问题标题】:New to VBA and am trying to create a conditional (If Or Then) codeVBA 新手,正在尝试创建条件(如果或则)代码
【发布时间】:2019-11-26 22:00:55
【问题描述】:

在 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 行发布单元格值(带有格式和公式)。任何帮助表示赞赏!

【问题讨论】:

  • 您需要为此使用Copy
  • 明白 - 谢谢!我已经取得了一些进展,但仍然卡住了,并编辑了我原来的问题。在这方面我是个新手。

标签: excel vba if-statement copy paste


【解决方案1】:

正如 BigBen 所说,您需要复制单元格以保留所有格式和公式。

编辑:您真的希望将复制的范围粘贴到工作表测试的第 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) 即可完成此操作。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2022-06-13
  • 2014-11-18
  • 1970-01-01
  • 2010-10-16
  • 2021-07-08
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多