2013-07-25 33 views
1

我是VBA的初學者,我想知道如何將IF ELSE語句添加到我的代碼中: 我只想啓用複製單元格,如果填充了它們並且它們是未填寫MSGBOX必須彈出使用If語句複製單元格與VBA

代碼:

Private Sub CommandButton3_Click() 

Application.ScreenUpdating = False 

    Dim NextRow As Range 

    Sheet1.Range("F7,F10,F13,F16,F19,F22,F25,F28").Copy 

    Sheets("Overzicht").Select 
    Set NextRow = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Offset(1, 0) 
    NextRow.Select 
    Selection.PasteSpecial (xlValues), Transpose:=True 

    MsgBox "Invoer is opgeslagen" 

    Application.CutCopyMode = False 
    Application.ScreenUpdating = True 

End Sub 

回答

0

歡迎stackoverflow.com

你必須換你copy code blockfor loop,IF-ELSE聲明和Boolean類型變量。

首先,你要遍歷您指定的單元格範圍,並確保它們都充滿

Dim allFilled As Boolean 
    Dim i As Long 
    For i = 7 To 28 Step 3 
     If Not IsEmpty(Sheet1.Range("F" & i)) Then 
      allFilled = True 
     Else 
      allFilled = False 
     End If 
    Next i 

如果他們是你可以用複製粘貼出發,如果他們程序會顯示一個消息框:Not all the cells are filled! Cant copy

您的完整代碼:

Sub CommandButton3_Click() 
Application.ScreenUpdating = False 

    Dim allFilled As Boolean 
    Dim i As Long 
    For i = 7 To 28 Step 3 
     If Not IsEmpty(Sheet1.Range("F" & i)) Then 
      allFilled = True 
     Else 
      allFilled = False 
     End If 
    Next i 

    If allFilled Then ' = if (allFilled = true) then 
     Dim NextRow As Range 
     Sheet1.Range("F7,F10,F13,F16,F19,F22,F25,F28").Copy 

     Sheets("Overzicht").Select 
     Set NextRow = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp). _ 
         Offset(1, 0) 
     NextRow.Select 
     Selection.PasteSpecial (xlValues), Transpose:=True 

     MsgBox "Invoer is opgeslagen" 

     Application.CutCopyMode = False 
     Application.ScreenUpdating = True 
    Else 
     MsgBox "Not all the cells are filled! Cant copy" 
    End If 
End Sub 

Update從評論

是的,它可以執行不同的檢查單獨過,例如:

Dim allFilled As Boolean 
If Not IsEmpty(Range("F7, F10, F13, F16")) And IsEmpty(Range("F8")) Then 
    ' F7, F10, F13, F16 are not empty and F8 is empty 
    allFilled = True 
ElseIf IsEmpty(Range("F28")) Then 
    ' F28 empty cannot execute copy-paste 
    allFilled = False 
Else 
    allFilled = False 
End If 
+0

感謝Mehow,這是非常有幫助的。是否也可以使單元格F16,F19,F22,F25中的一個有條件。那麼,那F7,F10,F13,F28和F16或F19或F22或F25?在複製之前是空的嗎? – user2618164

+0

@ user2618164是的,請參閱更新。 – 2013-07-25 11:41:06

+1

非常感謝! – user2618164