2017-07-19 5 views
0

私は、各列に1つの調査が含まれる調査データを含むワークシートを持っています。現在検討中の調査の特定のセルをコピーして、後で電子メールに追加する形式に貼り付けることにしました。以下のコードは、レビュー中の調査の現在の列番号を計算してから、その列の特定のセルをコピーしようとしていますが、データはその形式に貼り付けられません。vba - 行/列アドレス経由の間接コピー?

次のコードは:

Sub test 
Dim dataSheet, dataStart, dataSurvey As Range 
    dataSheet = "MED-FB-YTD"             ' name of the sheet where data is stored 
    Set dataSurvey = ThisWorkbook.Sheets("HeartBeat_Alert").Range("K5")   ' survey number of specific record eg. 5 
    Set dataStart = ThisWorkbook.Sheets("HeartBeat_Alert").Range("K4")   ' column number of first survey of specified time period eg. 307 
    dataCol = dataSurvey + dataStart - 1          ' actual data column is (dataStart + dataSurvey) - 1  eg. = 5+307-1 = column 311 


    With ThisWorkbook.Sheets("HeartBeat_Alert") 
     .Select 
     Sheets(dataSheet).Cells(25, dataCol) = ActiveSheet.Range("B3").Value  ' copy room no 
     Sheets(dataSheet).Cells(16, dataCol) = ActiveSheet.Range("B4").Value  ' copy arrival date 
     Sheets(dataSheet).Cells(17, dataCol) = ActiveSheet.Range("B5").Value  ' copy departure date 
    end with 

end sub 

それは私が働いていない/サポートされ、したがって、いくつかの助けをいただければ幸い上のデータをコピーしようとしている方法のように私には思えます。

おかげで、すべての A2K

+0

_With_ステートメントの使用を避けてください。ほとんどの場合、コードには不可解な機能が追加されます。あなたの例では、With ThisWorkbook.Sheets( "HeartBeat_Alert") '...' .Select' ... 'end with'は実際にはこのコマンド' ThisWorkbook.Sheets( "HeartBeat_Alert")。Select'です。代わりにそれを使用してください。また、@MichałTurczynの言われているように、 'Select'関数を使用しないでください。 – jsotola

答えて

1

まず:dataSheetString、ないRangeオブジェクトでなければなりません。

あなたはdataSurveydataStartの宣言を省略し、(あなたがそれを行う必要はありませんので、何も影響しません)これを使用することができます:

dataCol = Sheets("HeartBeat_Alert").Cells(5, 11).Value - Sheets("HeartBeat_Alert").Cells(4, 11).Value 

別の事を。 Selectシート( "HeartBeat_Alert")にする必要がない場合は、ActiveSheet.Range("B3").Valueの代わりに.Cells(3, 2).Valueを使用します(結果には影響しませんが、より効率的です)。

これらの変更の後、動作するはずです。

+0

ありがとう、あなたの提案を適合させ、他のサブシステムの全体を書き直しました。まだ毎日ここで学んでいます;) – Armitage2k

+0

@MichałTurczyn、実際には 'dataSheet'はそれが宣言されていないデフォルトなので、variantです。範囲として 'dataSurvey'だけが宣言されています – jsotola

関連する問題