簡體   English   中英

如果單元格值大於0,excel vba將單元格復制到另一個工作表

[英]excel vba copy cells to another sheet if cell value is greater than 0

如果另一列中的單元格值大於 0,我正在嘗試復制單元格值。

在工作表 1 中:

G3 : G25 = 名稱

L3 : L25 = ActiveX 復選框(如果選中則顯示價格,否則價格 = 空)

M3 : M25 = 價格(對應名稱)

在 Sheet2 中:

A82 : A104 = 空單元格

如果顯示價格(這意味着檢查 L 上的單元格),我想將 G 上的名稱復制到空單元格(Sheet2)。

這是我嘗試過的,但出現錯誤。

Sub option_list()
    Dim Source As Worksheet, Target As Worksheet
    Dim i As Long, j As Long

    Application.ScreenUpdating = False
    Set Source = ActiveWorkbook.Worksheets("Sheet1")
    Set Target = ActiveWorkbook.Worksheets("Sheet2")

    j = 82

    For i = 3 To 25
        If Source.Cells(i, 13).Value = 0 Then
            i = i + 1
        Else
            Source.Cells(i, 10).Copy
            Target.Cells("A" & j).PasteSpecial xlPasteValues
            j = j + 1
        End If
    Next i
End Sub

也許這會以您的預期方式工作。

  • for 循環將始終采用迭代中的下一個值,因此我們可以刪除i = i + 1
  • 由於我們想要在每次有一個不為 0 的值時進行復制,因此我們可以將其表示為<> 0
  • 我認為你在這里得到了一個錯誤,因為你混合了我們為range()編寫的方式。 對於cells()來說有點不同。 這部Target.Cells("A" & j)導致錯誤: Target.Cells("A" & j) cells的寫法如下: Cells(row, column) -> Cells(j, "A")

完整修改后的代碼:

Option Explicit

Sub option_list()
Dim Source As Worksheet, Target As Worksheet
Dim i As Long, j As Long

Application.ScreenUpdating = False
Set Source = ActiveWorkbook.Worksheets("Sheet1")
Set Target = ActiveWorkbook.Worksheets("Sheet2")

j = 82

For i = 3 To 25
    If Source.Cells(i, 13).Value <> 0 Then
        Source.Cells(i, 10).Copy
        Target.Cells(j, "A").PasteSpecial xlPasteValues
        j = j + 1
    End If
Next i
End Sub

在輸入值大於

[英]VBA Clear and Copy without blank rows to another sheet on entering value greater than

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM