2017-10-04 152 views
2

我想找到空細胞和複製有值:複製值下一個空單元格

enter image description here

值:「2017年10月11日」和「是」應該被複制到第7行(COLB & colC)。

我有什麼:

Sub add_value() 

Dim wbA As Workbook 
Dim wsA As Worksheet 

Set wbA = ActiveWorkbook 
Set wsA = wbA.Worksheets("Sheet1") 

Dim nrow As Long 

nrow = 6 

    Do Until wsA.Range("B" & nrow).Value = "" 
     wsA.Range("B" & nrow).Value = wsA.Range("B3").Value 
     wsA.Range("C" & nrow).Value = wsA.Range("C3").Value 
      Exit Sub 
     nrow = nrow + 1 
    Loop 

End Sub 

某處有問題,我的循環,我不知道如何解決它。

+0

刪除'exit sub'? – Vityata

回答

2

無需遍歷行,直到找到空行。你可以用這個代替整個子:

Sub add_value() 
    With ThisWorkbook.Worksheets("Sheet1") 
     .Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(1, 2).Value = .Range("B3:C3").Value 
    End With 
End Sub 

根據您的意見,也添加邊框您可以重新組織代碼有點像這樣:

Sub add_value() 
    Dim ws As Worksheet 
    Set ws = ThisWorkbook.Worksheets("Sheet1") 

    With ws.Cells(ws.Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(1, 2) 
     .Value = ws.Range("B3:C3").Value 
     .Borders(xlEdgeLeft).LineStyle = xlContinuous 
    End With 
End Sub 
+0

很好,在哪裏也可以:With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous End With ??? – 4est

+0

@ 4est,請參閱更新 - 您可以將邊界應用於目標範圍 – CallumDA

+0

thx,還有一個:如果B6爲空,該怎麼辦? – 4est

0

我會做什麼像這樣:

Sub FindFirstEmptyValue() 

    Dim lastRow  As Long 

    With Worksheets("Sheet1") 
     lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 
     .Cells(lastRow, 2) = .Range("B3").value 
     .Cells(lastRow, 3) = .Range("C3").value 
    End With 

End Sub 

它給你的最後一排,你加1,並在該行你寫的B3C3值。

+0

你的答案也適用 – 4est

相關問題