1

このvbaコードの実行中にこのエラーが発生します。その種の構文エラー。それを手伝ってください。これがスクリプトです。スクリプトが実行しているのは、ある列から別の列にデータをコピーし、コピーされた列を選択することです。

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Open("C:\Users\pc\Report\report_20120912.xls")
Set ws = objWorkbook.Worksheets("Data")
Set SelRange = objExcel.Selection
ws.Range("F2:F1000").AdvancedFilter 2,,ws.Range("M2"),True

ws.Range("N1") = ws.Range("A1")
ws.Range("O1") = ws.Range("B1")


//Below line has the bug

ws.Range("M2").Select             
selection=objExcel.Selection
col1=selection.End(xlDown)         //showing error on this line      
ws.Range(selection,col1).Select
n = ws.Range.Count
ws.Range("S2").Select
4

3 に答える 3

1

質問に Excel/Excel-VBA のタグが付けられているようです

CreateObjectVBA Excel でこれを行っている場合は、Excel の別のインスタンスを作成するために使用する必要はありません。現在のインスタンスでも作業できます

このコードを参照してください

Sub Sample()
    Dim objWorkbook As Workbook, ws As Worksheet

    Set objWorkbook = Workbooks.Open("C:\Users\pc\Report\report_20120912.xls")
    Set ws = objWorkbook.Worksheets("Data")

    With ws
        '
        '~~> Rest of the code
        '
    End With
End Sub

私のコメントで述べたように、コードからSelection/をスローしてください。Selectコードの速度が低下するだけでなく、実行時エラーが発生する可能性もあります。このリンクを参照してください。理解に問題がないように、以下のコードにコメントを付けました。:)

上記のコードは、次のように書くこともできます (コードはテストしていません) 。

Option Explicit

Sub Sample()
    Dim objWorkbook As Workbook, ws As Worksheet
    Dim lRow As Long, n As Long
    Dim mRange As Range

    '~~> Open the workbook
    Set objWorkbook = Workbooks.Open("C:\Users\pc\Report\report_20120912.xls")
    '~~> Set the sheet that you want to work with
    Set ws = objWorkbook.Worksheets("Data")

    With ws
        .Range("F2:F1000").AdvancedFilter 2, , .Range("M2"), True

        .Range("N1").Value = .Range("A1").Value
        .Range("O1").Value = .Range("B1").Value

        '~~> Find the last row
        lRow = .Range("M" & .Rows.Count).End(xlUp).Row

        '~~> Set your range
        Set mRange = .Range("M2:M" & lRow)

        n = mRange.Count
    End With
End Sub

.Select実際に使用または操作する必要がないことに気付いた場合は、Selection

于 2012-10-03T09:17:33.440 に答える
0

Selectionプロパティ onApplicationはオブジェクトなので、 を使用して割り当てる必要がありますSet。変化する

selection=objExcel.Selection

Set selection=objExcel.Selection

次の行が機能するはずです。

于 2012-10-03T08:57:47.310 に答える
0

次の行は疑わしいです。

selection=objExcel.Selection

selectionはおそらくグローバルSelectionプロパティ (のApplication) であるはずです。ただし、それに割り当てることはできません。読み取り専用です。小文字のスペルは、sここで Excel が混乱していることを示しています。Setさらに、オブジェクトを割り当てるために使用する必要があります。

于 2012-10-03T09:00:56.560 に答える