Excel/VBA-将选定工作表中的行范围提取到新书

Excel/VBA-将选定工作表中的行范围提取到新书,vba,excel,Vba,Excel,我正在尝试为Excel构建一个新的VBA函数。我有一本活页书,首页总是先加载,在这一页上我有一个组合框,列出了书中的所有其他活页,还有一个很好的提取按钮,可以将选中的活页拉到一本新书中。(感谢这里的帮助)。现在我需要一个新函数,它将使用相同的组合框,但只提取所选工作表的一小部分 不幸的是,每个工作表的子集不在同一行上,行数也不相同(因此一个工作表的子集可能是10行,另一个工作表的子集可能是12行,另一个工作表的子集可能是20行,以此类推) 另一方面,在每个子集的开始和结束处都有合并的行(从A列到

我正在尝试为Excel构建一个新的VBA函数。我有一本活页书,首页总是先加载,在这一页上我有一个组合框,列出了书中的所有其他活页,还有一个很好的提取按钮,可以将选中的活页拉到一本新书中。(感谢这里的帮助)。现在我需要一个新函数,它将使用相同的组合框,但只提取所选工作表的一小部分

不幸的是,每个工作表的子集不在同一行上,行数也不相同(因此一个工作表的子集可能是10行,另一个工作表的子集可能是12行,另一个工作表的子集可能是20行,以此类推)

另一方面,在每个子集的开始和结束处都有合并的行(从A列到G列),带有特定的文本,可用于搜索

经过一番反复之后,我得到了一段更好的代码,我认为这段代码几乎可以正常工作了:

Sub ZCPS_Extract()

Dim StartRow
Dim EndRow

Dim Zws As Worksheet

Dim wbkOriginal As Workbook
Set wbkOriginal = ActiveWorkbook

StartRow = 1
EndRow = 1

'sets site details into the header of the ZCPS checksheet
Worksheets(Sheet1.CmbSheet.Value).Range("B3").Value = Worksheets("front page").Range("E6")
Worksheets(Sheet1.CmbSheet.Value).Range("D3").Value = Worksheets("front page").Range("N6")
Worksheets(Sheet1.CmbSheet.Value).Range("F3").Value = Worksheets("front page").Range("K6")

Set Zws = Sheets(Sheet1.CmbSheet.Value)

'selects ZCPS block from select estate sheet
StartRow = (Zws.Cells.Find("**** ZCPS Installation").Row) + 1
EndRow = (Zws.Cells.Find("**** Aztec Hotfixes").Row) - 1

'copy above block and paste into Z-MISC starting at row 5
Worksheets(Sheet1.CmbSheet.Value).Range(Cells(StartRow, 1), Cells(EndRow, 7)).Copy Worksheets("Z-MISC").Range("A5")

With ActiveWorkbook.Sheets("Z-MISC")
            .Copy
            ActiveWorkbook.SaveAs _
            "C:\temp\" _
            & ActiveWorkbook.Sheets("Z-MISC").Cells(3, 2).Text _
            & " ZCPS CheckSheet " _
            & Format(Now(), "DD-MM-YY") _
            & ".xlsm", _
            xlOpenXMLWorkbookMacroEnabled, , , , False
        End With

'code to close the original workbook to prevent accidental changes etc
Application.DisplayAlerts = False
wbkOriginal.Close
Application.DisplayAlerts = True

End Sub
这是一个复制错误,我得到了一个运行时错误“应用程序定义的或对象定义的错误”,据我所知,这对我没有帮助。欢迎提供任何帮助/建议/建议

Sub ismerged()
Dim start As Integer, finish As Integer
For i = 1 To Range("A655").End(3).Row + 1
    If Cells(i, "A").MergeCells = True Then
        start = i
        Exit For
    End If
Next

For i = start To Range("A655").End(3).Row + 1
    If Cells(i, "A").MergeCells = True Then
        finish = i
    End If
Next
MsgBox start
MsgBox finish


End Sub

那么我想你可以随心所欲地选择你的数据。

我不确定你引用工作表的方式。我假设“comboboxvalue”包含您正在选择的工作表的名称或编号。您的代码应该如下所示

Sub Z_Extract()
Dim StartRow
Dim EndRow
Dim ws As Worksheet

Set ws = Sheets(comboboxvalue)
StartRow = ws.Cells.Find("**** ZC").Row
EndRow = ws.Cells.Find("****").Row

'Im assuming you have values up to column G
ws.Range(ws.Cells(StartRow, 1), Cells(EndRow, 7)).Copy

'Now that you have the correct Range selected you can copy it to your new workbook

'SelectedRange.Copy Etc.....

'Cleanup

Set ws = Nothing

End Sub
让它工作起来

    Set Zws = Sheets(Sheet1.CmbSheet.Value)


'selects ZCPS block from selected estate sheet
StartRow = (Zws.Cells.Find("**** ZCPS Installation").Row)
EndRow = (Zws.Cells.Find("**** Aztec Hotfixes").Row) - 1

'copy above block and paste into Z-MISC starting at row 10

Sheets(Sheet1.CmbSheet.Value).Activate
    ActiveSheet.Range(Cells(StartRow, 1), Cells(EndRow, 7)).Select

    Selection.Copy
    Sheets("Z-MISC").Select
    Range("A10").Select
    ActiveSheet.Paste

再试试看。遇到实际问题时请回来。更改了使我更进一步的复制行,现在读作:
工作表(Sheet1.CmbSheet.Value).范围(单元格(StartRow,1),单元格(EndRow,7)).copy u Destination:=ActiveWorkbook.Sheets(“Z-MISC”).Range(“A10”)
-但仍然存在对象引用错误,我看不出原因。变量上的对象观察器为我提供与我所期望的匹配的信息。