[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行の取得』(杏)
いつもお世話になっております。 現在Sheet2のそれぞれの枠に、Sheet1の表から、 値を取得してくるマクロを自動記録で作成しました。 これを最終行から取得のマクロに書き換える場合は どのように書き換えれば動きますでしょうか。
Private Sub CommandButton1_Click()
Range("A12:D12").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[35]C[3]"
'D47を転記
Range("E24").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[23]C[1]"
'F47を転記
Range("E25").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[22]C[3]"
'H47を転記
Range("C33").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[14]C[7]"
'J47を転記
Range("E33:F33").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[14]C[6]"
'K47を転記
Range("H33").Select
ActiveCell.FormulaR1C1 = "='Sheet1'!R[14]C[4]"
'L47を転記
End Sub
Exel2002×Win2000です。
こんな感じでしょうか。
Private Sub CommandButton1_Click()
MyRow = Worksheets("Sheet1").Range("D65536").End(xlUp).Row
Range("A12:D12").Select
ActiveCell.Formula = "='Sheet1'!D" & MyRow
'D列を転記
Range("E24").Select
ActiveCell.Formula = "='Sheet1'!F" & MyRow
'F列を転記
Range("E25").Select
ActiveCell.Formula = "='Sheet1'!H" & MyRow
'H列を転記
Range("C33").Select
ActiveCell.Formula = "='Sheet1'!J" & MyRow
'J列を転記
Range("E33:F33").Select
ActiveCell.Formula = "='Sheet1'!K" & MyRow
'K列を転記
Range("H33").Select
ActiveCell.Formula = "='Sheet1'!L" & MyRow
'L列を転記
End Sub
セレクトしないでよければ以下のような感じです。
Private Sub CommandButton1_Click()
MyRow = Worksheets("Sheet1").Range("D65536").End(xlUp).Row
Range("A12").Formula = "='Sheet1'!D" & MyRow
'D列を転記
Range("E24").Formula = "='Sheet1'!F" & MyRow
'F列を転記
Range("E25").Formula = "='Sheet1'!H" & MyRow
'H列を転記
Range("C33").Formula = "='Sheet1'!J" & MyRow
'J列を転記
Range("E33").Formula = "='Sheet1'!K" & MyRow
'K列を転記
Range("H33").Formula = "='Sheet1'!L" & MyRow
'L列を転記
End Sub
(川野鮎太郎)
ありがとうございます、きれいに出来ました! 質問のついでにもうひとつ教えていただきたいのですが、
Sheet1のD列の最終行をSheet2のB列の最終行の一行下に追記する、 といったようなマクロはどのように組めばいいのでしょうか? Rangeのところに、Myrowをつっこんでみて自爆してしまいました…。 (杏)
こんな感じです。
MyRow1 = Worksheets("Sheet1").Range("D65536").End(xlUp).Row
MyRow2 = Worksheets("Sheet2").Range("B65536").End(xlUp).Row + 1
Worksheets("Sheet2").Range("B" & MyRow2) = Worksheets("Sheet1").Range("D" & MyRow1)
変数を使わず直接読み書きするなら、こんな感じです。
Worksheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0) _
= Worksheets("Sheet1").Range("D65536").End(xlUp).Value
(川野鮎太郎)
直接書き込む方法を多用させていただきました。 変数を使うといちどきの処理は美しいですねえ…。
またまたご質問で申し訳ないのですが、 この値が、月日の場合にうまく転記されないようなことは ありますでしょうか? 数式からの値は取得してくれたのですが、月日の値を うまく取得してくれず…。 Valueのところを何かに変えたほうがよいのでしょうか? また、Sheet1のD列の値を10倍にして転記する、というようなことは 可能なのでしょうか? (杏)
Sheet1の月日にはどのように入っていますか。 そのときに、Sheet2には、どのようになりますか。(多分表示形式の違いでしょうが・・・。)
>Sheet1のD列の値を10倍にして転記する
そのまま、右側のWorksheets("Sheet1").Range("D65536").End(xlUp).Value * 10
で、良いですよ。
(川野鮎太郎)
原因がわかりましたー。転記先のその行だけ、だいぶ上の方まで空白だったため、 最終行の位置が違ったのが原因でした…。入れたい日数がすごく上のほうに、 入ってた…。 10倍もうまく行きました!! お陰様で五箇所くらいに似たようなデータを打ち込んでいたのが、 ボタンひとつで転記できるようになりましたー! ありがとうございます! (杏)
たびたびすみません!
Worksheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0) _
= Worksheets("Sheet1").Range("D65536").End(xlUp).Value
こちらの式を使った場合、参照元のセルが計算式の場合、 値を反映させたいのですが、そういったことは可能でしょうか? 難しいようであれば、上の方で頂いた参照の形で転記する式を 使用するのですが…。 (杏)
.Value ですから、値が反映されるはずですが・・・。
(川野鮎太郎)
大変失礼しました。またも取得する行に見えない数字が入っていたようです…。 削除して解決いたしました。すみません〜!! (杏)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.