2016-10-02 150 views
0

我有一張表,我們稱之爲sheetA。我在該工作表中有一系列字段(rangeA),其中的公式可以確定同一工作表中的兩個範圍。我們稱它們爲rangeBrangeC。一旦確定這些,我想分別將rangeBrangeC分別複製到sheetBsheetC。一旦完成,我想刪除rangeA。重新排序,以便我可以手動輸入該範圍內的新值並重復該過程。在VBA中複製,粘貼和刪除相關範圍到不同的表單

我想有一個功能/按鈕,可以實現這一點。我曾嘗試以下:

Private Sub TransferPuzzleButton1_Click() 

    FirstOperation 
    GetFirstEmptyCell1 "sht As Worksheet", "row As Long" 
    SecondOperation 
    GetFirstEmptyCell1 "sht As Worksheet", "row As Long" 
    ClearCell 

End Sub 

Sub FirstOperation() 
    Dim sourceSht As Worksheet: Set sourceSht = ThisWorkbook.Worksheets(1) 
    Dim destSht As Worksheet: Set destSht = ThisWorkbook.Worksheets(2) 

    GetFirstEmptyCell(destSht, 1).Resize(25).Value = sourceSht.Range("A1:A27").Value 
End Sub 

Function GetFirstEmptyCell1(sht As Worksheet, row As Long) As Range 
    Set GetFirstEmptyCell = sht.Cells(1, sht.Columns.Count).End(xlToLeft) 
    If Not IsEmpty(GetFirstEmptyCell) Then Set GetFirstEmptyCell = GetFirstEmptyCell.Offset(, 1) 

End Function 
Sub SecondOperation() 
    Dim sourceSht As Worksheet: Set sourceSht = ThisWorkbook.Worksheets(1) 
    Dim destSht As Worksheet: Set destSht = ThisWorkbook.Worksheets(3) 
    GetFirstEmptyCell(destSht, 1).Resize(2).Value = sourceSht.Range("C1:C2").Value 

End Sub 
Function GetFirstEmptyCell2(sht As Worksheet, row As Long) As Range 
    Set GetFirstEmptyCell = sht.Cells(1, 2).End(xlToLeft) ' 
    If Not IsEmpty(GetFirstEmptyCell) Then Set GetFirstEmptyCell = GetFirstEmptyCell.Offset(, 1) 
End Function 
Sub ClearCell() 
    Dim sourceSht As Worksheet: Set sourceSht = ThisWorkbook.Worksheets(1) 

    sourceSht.Range("F7:I10").Clear 
    sourceSht.Range("C1:C2").Clear 
End Sub 

看來我壓延Sub調用不知何故

回答

0

隨着GetFirstEmptyCell1 "sht As Worksheet", "row As Long"你試圖調用子接受參數的開始。參數輸入是在sub的定義中完成的,而不是在調用sub的語句中完成的。

當你調用sub時,你需要提供它所期望的參數,在本例中是一個工作表和一個long。

因此,在調用子之前準備好數據。縮寫:

Private Sub TransferPuzzleButton1_Click() 

Dim mySheet As Worksheet 
dim myNumber as Long 
Set mySheet = ThisWorkbook.Worksheets("DemoSheet") 
MyNumber = 1000 

' now call the function 

    GetFirstEmptyCell1 mySheet, myNumber 

End Sub 


    Function GetFirstEmptyCell1(sht As Worksheet, row As Long) As Range 
     Set GetFirstEmptyCell = sht.Cells(1, sht.Columns.Count).End(xlToLeft) 
     If Not IsEmpty(GetFirstEmptyCell) Then Set GetFirstEmptyCell = GetFirstEmptyCell.Offset(, 1) 

    End Function 

順便說一句,您在函數內使用的名稱是不一致的。 GetFirstEmptyCell1與GetFirstEmptyCell。

相關問題