在VBA

时间:2016-10-02 20:24:40

标签: excel vba excel-vba function worksheet-function

我有一张表,我们称之为sheetA。我在该表(rangeA)中有一系列字段,其中的公式可以确定同一工作表中的两个范围。我们称他们为rangeBrangeC。确定后,我想分别将rangeBrangeC复制到工作表sheetBsheetC。完成后,我想删除rangeA。重置排序,以便我可以手动输入该范围内的新值并重复该过程。

我希望有一个可以实现此目的的功能/按钮。我尝试过以下方法:

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调用

1 个答案:

答案 0 :(得分:0)

使用void remove_one(char* name) { struct dog *tempList = list; struct dog *previous = NULL; if (tempList == NULL) { return; } while (tempList != NULL) { if (strcmpi(tempList->name, name) == 0) { if (previous == NULL) { tempList = tempList->next; } else { previous->next = tempList->next; free(tempList); tempList = previous->next; } return; } else { previous = tempList; tempList = tempList->next; } } return; } ,您尝试调用带参数的子。参数类型在sub的定义中完成,而不是在调用sub的语句中完成。

当你调用sub时,你需要提供它所期望的参数,在这种情况下是一个工作表和一个long。

因此,在调用sub之前,请准备好数据。缩写:

GetFirstEmptyCell1 "sht As Worksheet", "row As Long"

顺便说一句,你在函数中使用的名称不一致。 GetFirstEmptyCell1 vs GetFirstEmptyCell。