Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10231 / 13646 ツリー ←次へ | 前へ→

【22930】セルのアドレスの取得方法を教えてくださ... VBA素人 05/3/7(月) 22:51 質問[未読]
【22933】Re:セルのアドレスの取得方法を教えてくだ... かみちゃん 05/3/7(月) 23:56 回答[未読]
【22934】Re:セルのアドレスの取得方法を教えてく... ponpon 05/3/7(月) 23:58 発言[未読]
【23013】Re:セルのアドレスの取得方法を教えてく... VBA素人 05/3/9(水) 21:31 質問[未読]

【22930】セルのアドレスの取得方法を教えてくださ...
質問  VBA素人  - 05/3/7(月) 22:51 -

引用なし
パスワード
   誰か教えてください。下記のエクセルのデータがあります。

名称  数量 単価 金額
A製品  2  100  200
B製品  5  200  1000
以下数十件のデータがあります。

この中から任意のセルのデータを取得したいのです。例えば、(1)単価のセルと、金額のセルをデータがあるだけ取得したいのです。(2)別の処理で、名称のセルと、数量のセルと、金額のセルをデータがあるだけ取得したいのです。このような場合、マクロでどのように処理すれば良いのかわかりません。行は、数十件あるファイルや、数百件あるファイルなど、さまざまなファイルがあります。以上、何か良い方法はありますか。教えてください。

【22933】Re:セルのアドレスの取得方法を教えてく...
回答  かみちゃん  - 05/3/7(月) 23:56 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>(1)単価のセルと、金額のセルをデータがあるだけ取得したい

CurrentRegionプロパティをヘルプで確認してみてください。

Option Explicit
Sub Macro1()
 Dim tbl As Range
 
 Set tbl = Range("A1").CurrentRegion
 tbl.Offset(1, 2).Resize(tbl.Rows.Count - 1, _
  tbl.Columns.Count - 2).Select
End Sub

> (2)別の処理で、名称のセルと、数量のセルと、金額のセルをデータがあるだけ取得したい

手作業でExcelの最下行に移動して、Endキーを押して、↑キーを押す作業を「マクロの記録」で記録してみてください。
それを応用したものが次のものです。

Sub Macro2()
 '名称がA列の場合
 Range("A1", Cells(Columns("A").Rows.Count, Columns("A").Column).End(xlUp)).Select
 '数量がB列の場合
 Range("B1", Cells(Columns("B").Rows.Count, Columns("B").Column).End(xlUp)).Select
 '金額がD列の場合
 Range("D1", Cells(Columns("D").Rows.Count, Columns("D").Column).End(xlUp)).Select
End Sub

【22934】Re:セルのアドレスの取得方法を教えてく...
発言  ponpon  - 05/3/7(月) 23:58 -

引用なし
パスワード
   ▼VBA素人 さん:
ponponです。こんばんは。
もう少し詳しく説明を書くとレスがつくと思いますよ。

>名称  数量 単価 金額
>A製品  2  100  200
>B製品  5  200  1000
>例えば、(1)単価のセルと、金額のセルをデータがあるだけ取得したいのです。

例えば、以下のコードはsheet1にある単価と金額のデータをsheet2のB2から
書き出します。ただし空白行は無いものとします。ベタですが…

Sub test()
   Worksheets("sheet1").Select
   Range(Cells(2, 3), Cells(2, 3).CurrentRegion.SpecialCells(xlLastCell)).Copy
   Worksheets("sheet2").Select
   Range("B2").PasteSpecial (xlPasteValues)
   Application.CutCopyMode = False
End Sub

【23013】Re:セルのアドレスの取得方法を教えてく...
質問  VBA素人  - 05/3/9(水) 21:31 -

引用なし
パスワード
   ▼ponpon さん:
>▼VBA素人 さん:
>ponponです。こんばんは。
>もう少し詳しく説明を書くとレスがつくと思いますよ。
>
>>名称  数量 単価 金額
>>A製品  2  100  200
>>B製品  5  200  1000
>>例えば、(1)単価のセルと、金額のセルをデータがあるだけ取得したいのです。
>
>例えば、以下のコードはsheet1にある単価と金額のデータをsheet2のB2から
>書き出します。ただし空白行は無いものとします。ベタですが…
>
>Sub test()
>   Worksheets("sheet1").Select
>   Range(Cells(2, 3), Cells(2, 3).CurrentRegion.SpecialCells(xlLastCell)).Copy
>   Worksheets("sheet2").Select
>   Range("B2").PasteSpecial (xlPasteValues)
>   Application.CutCopyMode = False
>End Sub

皆さん、ご指導ありがとうございました。

10231 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free