| すぐマク YNxv9694 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
| 帳票の一番最後の空白セルに値を貼り付けるには? |
|
|
|||
|
ご提示されたマクロに行番号を入れておきましたので、それを使って解説します。 やりたいことに直接関係するコードは、下記のとおりでしょうか。 10〜14行目… 「データベース」シートの I33:T33セルをコピーして、 30〜32行目… 「JESS発注帳票.XLS」を開いて、「帳票」シートの A3セルを選択し、 40〜46行目… 「JESS発注帳票.XLS」をアクティブにして、一番最後の空白セルを選択して、値を貼り付け、 50〜52行目… そのブックを保存して、閉じる。 よって、関係なさそうなコードは、20、60〜64行目のようです。 このマクロのポイントは、「一番最後の空白セルに」という点です。それ以外は、ごく単純なコピー貼り付けのマクロですから、あまり難しく考えずに自動記録したマクロを部分修正する方法が良いでしょう。 自動記録して、行番号を付けて整理したのが次のマクロです。
Sub Macro1()
10 Sheets("データベース").Select
12 Range("I33:T33").Select
14 Selection.Copy
30 ChDir "D:\住器業務"
31 Workbooks.Open Filename:="D:\住器業務\JESS発注帳票.xls"
32 Sheets("帳票").Select
44 Range("A4").Select
46 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
47 Application.CutCopyMode = False
50 ActiveWorkbook.Save
52 ActiveWorkbook.Close
End Sub
30行目に新しいコードが入りましたが、これから開こうとするブックが、それまでに開いているブックと同じフォルダにある場合には不要です。元の30行目が31行目に変わっています。47行目に不要なコードがありますが、目障りならば削除して構いませんし、そのままでも害はありません。44行目は仮に作ってありますから修正しなければなりません。あなたのマクロでは Endプロパティの引数を xlDownに指定して終端セルを取得していますが、この方法はデータが入っていない状態で使用すると不具合が出る場合があります。 それを避けるため、下記のように引数を xlUPに変更してシートの最下端から取得する方法をお勧めします。
44 貼付行 = Range("A65536").End(xlUp).Row + 1
45 Range(Cells(貼付行, 1), Cells(貼付行, 1)).Select
修正後の 44行目では、終端セルの次のセルを変数「貼付行」に代入しています(そのままですと空白セルになりませんから)。そして、その変数を使って A列のセルを選択しているのが 45行目です。
【参考ページ】 2) 範囲を検出して選択(上端、下端、左端、右端、他) |
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |