差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| study:vba:copy [2017/03/15 02:39] – 作成 banana | study:vba:copy [2020/03/26 04:17] (現在) – [How to copy range form one sheet to another] banana | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== How to copy range form one sheet another ====== | + | ====== How to copy range form one sheet to another ====== |
| excelシートのある範囲(Range)を同じWorkbookの別シートに張り付ける方法を紹介する。\\ | excelシートのある範囲(Range)を同じWorkbookの別シートに張り付ける方法を紹介する。\\ | ||
| - | Range.Copyメソッドを使うだが、範囲のlastRowを判断するロジックとコピー先の最後列を計算するロジックを入れる。\\ | + | Range.Copyメソッドを使うのだが、範囲のlastRowを判断するロジックとコピー先の最後列を計算するロジックを入れる。\\ |
| 想定している使い方としては、マスタシートの必要な部分のみピックアップして別シートにコピーすることだ。\\ | 想定している使い方としては、マスタシートの必要な部分のみピックアップして別シートにコピーすることだ。\\ | ||
| 例えば、OLEDBドライバを使いExcelをDBとして使う場合、255番目以降のデータは認識されない問題がある。\\ | 例えば、OLEDBドライバを使いExcelをDBとして使う場合、255番目以降のデータは認識されない問題がある。\\ | ||
| 行 10: | 行 10: | ||
| ===== Code snippet ===== | ===== Code snippet ===== | ||
| + | sourceはマスタシート、targetはコピー先のシート指定する。\\ | ||
| + | startColはRangeの最初Column、endColは最後Columnを指定する。 | ||
| <code vb> | <code vb> | ||
| 行 25: | 行 27: | ||
| End With | End With | ||
| End Sub | End Sub | ||
| + | </ | ||
| + | ここでは、lastRowを判断するColumnをstartColに対してだけ行っているが、空白が入っている可能性もあるので、endColまでLoopして判断した方が正確であろう。\\ | ||
| + | lastColはtargetシートに何もない状態だと1が帰ってくるので、0に初期化するロジックが入っている。\\ | ||
| + | では、このメソッドを呼び出すコードを以下に示す。 | ||
| + | |||
| + | <code vb> | ||
| + | Sub RangeCopy() | ||
| + | Dim ws1 As Worksheet | ||
| + | Dim lastRow As Long | ||
| + | Set ws1 = Sheets(" | ||
| + | |||
| + | lastRow = ws1.Cells(Rows.Count, | ||
| + | Call AddTable(ws1, | ||
| + | Call AddTable(ws1, | ||
| + | | ||
| + | End Sub | ||
| </ | </ | ||
| + | |||