[[20100707163934]] 『マクロ 範囲内の最終行の設定方法??』(さくら) ページの最後に飛ぶ

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

 

『マクロ 範囲内の最終行の設定方法??』(さくら)
 お世話になります。どなたか分かりましたら教えてください。よろしくお願いします。
 いろいろのサイト調べながら作りましたが、だんだんわけの分からないものに。。。。

 最終行を求めるのは↓で分かりましたが、
 .Range("A" & Rows.Count).End(xlUp).Row + 1

 A8:F22の最終行を求め方が分かりませんでした。
 範囲内での最終行は求められないものですか??

 分かりましたら教えてください。よろしくお願いします。

 A列最終行取得の一例

 dim a as long
 a = range("a1").end(xldown).row

 ご参考
 http://www.moug.net/tech/exvba/0050077.htm

 (うっかりさん)

 うっかりさん早速回答ありがとうございます。
 試してみましたが、ウマく転記されないままです。
 どうも私のコードが違うのか??

 何とかできないものでしょか??
 (さくら)


 色々あるけど。
 A列からF列までループして、1番大きいものをとっても良いし。
 BJ

 for i = 1 to 6
    RR = .Cells(Rows.Count,i).End(xlUp).row
    if Sav < RR then
       Sav = RR
    end if
 next
 msgbox Sav
 因みに↑A8:F22の範囲とか考えてません。

 Dim Rng As Range
 With Range("A8:F22")
    Set Rng = .Cells.Find("*", .Cells(1), xlValues, xlWhole, xlByRows, xlPrevious)
    MsgBox Rng.Row
 End With

 BJさん回答ありがとうございます。
 試してみましたが、やはりだめでした(T0T)
 請求書のデータを在庫シートに転記したいですが、範囲の箇所に躓いています。
 勉強したいと思っていますので、教えていただけませんか?よろしくお願いします。><

[請求書シートA1から作成しています。]

 請求書						2010年5月17日	
 0120112222					宅配:		1 ヶ
 ABC 様							

 総合計		\7,800					

 NO	品名		単価	数量		金額	適用
 A1	オレンジ		130 	2cs/	60pc	7,800 	
 A2	商品B		140 	2cs	60pc	8,400 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
						0 	
合計 						16,200 	

[在庫シートA1から記録]

 客NO	店名	年月日	NO	品名		単価	数量		金額
0120112222	ABC	2010年5月17日	A1	オレンジ		130 	2cs/	60pc	
0120112222	ABC	2010年5月17日	A2	商品B		140 	2cs	60pc	

Sub 登録()

    Dim mr As Long
    Dim i As Long, ii As Long, cn As Long
    Dim kk, WS As Worksheet
    Dim msg As String

     Set WS = Worksheets("客情報")
     kk = Application.Match(Range("A2").Value, WS.Range("A:A"), 0)
    'TEL番頭チェック
      If Range("A2").Value = "" Then
       msg = vbLf & "氏名を入力してください。"
      Exit Sub
     End If

       '在庫シートへ転記
       With Sheets("在庫")
            mr = .Range("A" & Rows.Count).End(xlUp).Row + 1
               .Cells(mr, 1).Value = Range("A2").Value   'TELL
               .Cells(mr, 2).Value = Range("A3").Value   '店名
               .Cells(mr, 3).Value = Range("G1").Value   '日付
            'A8:F22範囲内の最終行

↑この上までは転記できましたが、↓が転記できないでいます。
記入している箇所が違うのでしょか??

            r = Range("B8" & Rows.Count).End(xlUp).Row - 1 '行番頭  i = 1
             For ii = 1 To 6 '列番号
              .Cells(mr, ii).Value = Cells(kk, ii).Value
             Next
        End With

      '宅急便シートへ転記
        With Sheets("宅急便")
          mr = .Range("A" & Rows.Count).End(xlUp).Row + 1
               .Cells(mr, 1).Value = Range("A2").Value   '番号
               .Cells(mr, 2).Value = Range("H2").Value   '個数
         End With

         With Sheets("情報")

          'データ存在チェックない時のみ転記する
           If IsNumeric(kk) Then
             MsgBox kk & "行目に重複の職員番号がありました。"
            Else  '↓ダブりがないときの処理
               .Cells(mr, 1).Value = Range("A2").Value   'TELL
               .Cells(mr, 2).Value = Range("A3").Value   '店名

          End If

        End With

    End Sub

説明下手ですが、わかりますか??
(さくら)


 For ii = 1 To 6 '列番号
     .Cells(mr, ii).Value = Cells(kk, ii).Value
 Next
これはどの様な情報を転記するのか解りませんが、もし客情報シートの情報を書き込むとしたら
Cells(kk, ii).ValueはWorksheets("客情報").Cells(kk, ii).Valueでは。
後、再度A列から書き込みしていますが良いのでしょうか?
(PON)


 解りにくかったかもしれないけど、一応2種書いておいたので、
 こっちを試してください。
 BJ

 Dim Rng As Range
 With Range("A8:F22")
    Set Rng = .Cells.Find("*", .Cells(1), xlValues, xlWhole, xlByRows, xlPrevious)
    MsgBox Rng.Row
 End With


 PON さん回答ありがとうございます。^^

 With Sheets("在庫")
            mr = .Range("A" & Rows.Count).End(xlUp).Row + 1
               .Cells(mr, 1).Value = Range("A2").Value   'TELL
               .Cells(mr, 2).Value = Range("A3").Value   '店名
               .Cells(mr, 3).Value = Range("G1").Value   '日付
            'A8:F22範囲内の最終行
            r = Range("B8" & Rows.Count).End(xlUp).Row - 1 '行番頭  i = 1
             For ii = 1 To 6 ' ◆←は
              .Cells(mr, ii).Value = Cells(r, ii).Value
             Next
        End With

請求書シートのデータを在庫シートに転記するものです。
お客情報シートは関係ないものです。

(さくら)


 BJさん回答ありがとうございます。

 すみません見逃しました。^^;;

 上のコードに入れられなかったので、
 単独のコードで試したところ、
 メッセージBOXが「9」と
 最終行は表示されましたが。。。

 転記するコードではない?ですか?

 (さくら)


 >転記するコードではない?ですか?
 ちょっと意味が解りませんでした。

 >最終行は表示されましたが。。。
 最終行が解れば良かったのではないですか?
 BJ


 BJさん回答ありがとうございます。

 >>最終行は表示されましたが。。。
  >最終行が解れば良かったのではないですか?

 はい。その通りです。質問ガ下手ですみません。

 最終行を調べてそのデーターを別のシートに転記できる
 コードを知りたいです。分かりましたら、教えてください。よろしくお願いします

 (さくら)


 With 貼り付け元シート.Range("A8:F22")
    Set Rng = .Cells.Find("*", .Cells(1), xlValues, xlWhole, xlByRows, xlPrevious)
    行 = Rng.Row
    貼り付け先シート.Range("A" & mr & ":F" & mr).Value = Application.Intersect(Rows(行), .Cells).Value
 End With
 BJ

BJさんありがとうございます。

 ためしましたが、転送先のシートは真っ白になります。
なぜですか?

 質問が下手で何度もすみません。
 自分のやりたいことは

 A8:F22 の 各行のデータ (空白行は除く)
  +
 A2
 A3
 F1 のデータ 
 = 在庫シート一覧表に転送させることです。

 マクロで出来ますか?ずっとやっていますが、ほしい結果にならず困っています。
 分かりましたら、教えてください。よろしくお願いします。

(さくら)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.