2016-10-02 6 views
0

シートがありますので、sheetAとしましょう。私は同じシートの2つのより多くの範囲を決定する数式を持つシート(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 

私があなたが引数を取り、サブを呼び出すようにしようとしているGetFirstEmptyCell1 "sht As Worksheet", "row As Long"で何とか

答えて

0

呼び出すSub始まりをマングリングてるようだ:私は、次の試してみました。引数の型付けは、サブの定義で行われ、サブを呼び出す文では行われません。

サブを呼び出すときには、必要なパラメータ(この場合はワークシートとロング)を指定する必要があります。

したがって、サブを呼び出す前にデータを準備してください。省略:

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。

関連する問題