2016-04-12 15 views
0

新しい本に選択したシートから行の範囲を抽出します。私はいつも、私はすべての本の中で他のシートとすることを選択したシートを引き出します素敵な抽出ボタンを示していますコンボボックスを持って、このページの、最初のロードフロントページで、シートの本を持っています新しい本。 (助けてくれた人たちのおかげで)。今では、同じコンボボックスを使用する新しい関数が必要ですが、代わりに選択したシートの小さなサブセットのみを抽出します。エクセル/ VBA - 私はExcelのVBAの新しい機能を構築しようとしている

残念ながら、そのサブセットはすべてのシートに対して同じ行にありませんし、行数も同じではありません(1つのシート、サブセットは10行、別のものは12行、別のものは12行、 20、etcなどなど)。

はプラス側では、スタートと各サブセットの終わりに(列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 

それは私が」のランタイムエラーを取得しています、コピーのためのライン上のエラーです私の限られた知識に私を助けていないアプリケーション定義またはオブジェクト定義のエラーです。いかなる支援/指針/示唆も歓迎されます。

+0

いくつかは、より多くしようとしています。あなたが本当の問題に遭遇したときに戻ってください。 。 –

+0

が今のように読んで、少しさらに私を持っているコピーラインを変更: 'ワークシート(Sheet1.CmbSheet.Value).Range(細胞(STARTROW、1)、細胞(とendRow、7))コピー_を 先:= ActiveWorkbook.Sheets( "Z-MISC")。Range( "A10") ' - まだオブジェクト参照エラーが発生しています。変数のオブジェクトウォッチャーは、私が期待しているものと一致する情報を私に与えます。 –

答えて

0

これは機能しています。

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 
0
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 

次に、希望するデータを選択することができます。

0

私はあなたのシートを参照する方法についてはよく分かりません。 「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 
関連する問題