[[20050523170532]] 『最終行の取得』(杏) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『最終行の取得』(杏)

 いつもお世話になっております。
 現在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.