[[20150806134359]] 『違うシートへの転記 (続き)』(栗吉) ページの最後に飛ぶ

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

 

『違うシートへの転記 (続き)』(栗吉)

こちらで教わりうまく作動するのですが、シートが横長でみにくいので、項目を途中から違うシート(一覧2)に移動させたいのです。

移動は、A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 の以上です。

よろしくお願い致します。

↓教わったコードです。

Sub Test1()

    Dim c As Range
    Dim v As Variant
    Dim x As Long

    With Sheets("訪問シート入力")
        With .Range("A2,F5,G5,D3,C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,J14,J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37")
            ReDim v(1 To .Count)
            For Each c In .Cells
                x = x + 1
                v(x) = c.Value
            Next
        End With
    End With

    With Sheets("一覧")
        .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, UBound(v)).Value = v
    End With

End Sub

< 使用 Excel:Excel2010、使用 OS:WindowsXP >


こんにちは

.Range("A2〜 の中身と、With Sheets("一覧")のシート名を変更して2回実行すれば
いいだけだと思うのですが、今後のためにも自分で修正出来るようにコードを理解した方がいいですよ。

Sub test()

    Call Test1("訪問シート入力", "一覧", "C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,J14," & _
                                            "J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24")
    Call Test1("訪問シート入力", "一覧2", "A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 ")
End Sub
Sub Test1(msh As String, shName As String, a As String)
    Dim c As Range
    Dim v As Variant
    Dim x As Long

    With Sheets(msh)
        With .Range(a)
            ReDim v(1 To .Count)
            For Each c In .Cells
                x = x + 1
                v(x) = c.Value
            Next
        End With
    End With

    With Sheets(shName)
        .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, UBound(v)).Value = v
    End With
End Sub

(ウッシ) 2015/08/06(木) 15:59


 >>項目を途中から違うシート(一覧2)に移動させたいのです。 
 >>移動は、A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 の以上です。 

 よくわかりません。

 >>A2,F5,G5,C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,J14,J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37

 これらのセルの途中から? 
 それとも、これとは関係なく、あらたに A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 を対象?

 前者であれば【途中から】ではないですし、D3 などは、なかったセルですね?

 後者だとすれば、A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 の途中からとは、どこからでしょう?

(β) 2015/08/06(木) 16:11


すみませ(β)さん。説明不足で。

("A2,F5,G5,D3,C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,J14,J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37")
↑上のコードの中から【A2,F5,G5,D3】は「一覧」「一覧2」に両方に入り、続きで次のコードから「一覧2」に転記→【I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 】としたいのです。

"訪問シート入力"のシート内でボタンを押すと「一覧」と「一覧2」に同時に転記するVBAを作成したいのです。

「一覧」に転記するセルは
("A2,F5,G5,D3,C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,J14,J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24")

「一覧2」に転記するセルは("A2,F5,G5,D3,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37 ")です。

エクセルで一行に入ると横にのびて見ずらかったので。

(すみません。D3は抜けていたので追加したんです)

よろしくお願い致します。


こんにちは

 2015/08/06(木) 15:59 の

Sub test()

をご自分で修正して試して下さい。

(ウッシ) 2015/08/06(木) 17:21


 まず、レスは編集で書きこむのではなく、下のコメント欄に記入してアップしてください。
 でないと、だれがいつアップしたレスかがわからないので。

 さて、ウッシさんのコメント、

 >>後のためにも自分で修正出来るようにコードを理解した方がいいですよ。

 この通りです。

 >>Sub test()  をご自分で修正して試して下さい。 

 ちょっとだけヒントを。

 βがアップした Test1 を ウッシさんが【共通プロシジャ】に仕立て上げておられます。

 Call 共通プロシジャ名(転記元シート名,転記先シート名,転記元セル群) 

 このようにして使います。

 今回の場合、一覧に転記するセル群、一覧2に転記するセル群は、栗吉さん自身が、整理してアップしていますよね。
(β) 2015/08/07(金) 06:12


すみませんでした。
これから挑戦してみます。
ありがとうございます。

(栗吉) 2015/08/07(金) 08:50


挑戦してみましたが、共通プロシージャは自分には使えませんでした。
自分なりに作ってみました。

Sub Test3()

    Dim c As Range
    Dim v As Variant
    Dim x As Long

    With Sheets("訪問シート入力")
        With .Range("A2,F5,G5,D3,C4,C5,H5,J5,J1,J2,J3,J4,L5,I9,J9,K9,L9,J11,k11,L11,J13,k13,l13,J14,J15,L15,J17,L17,K19,K20,L20,K21,K22,K23,K24")
            ReDim v(1 To .Count)
            For Each c In .Cells
                x = x + 1
                v(x) = c.Value

            Next
        End With
    End With

    With Sheets("一覧")
        .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, UBound(v)).Value = v
    End With

   x = 0
    With Sheets("訪問シート入力")
        With .Range("A2,F5,G5,D3,J2,I27,I28,I29,I30,I31,I32,I33,I34,I35,I36,I37")
            ReDim v(1 To .Count)
            For Each c In .Cells
                x = x + 1
                v(x) = c.Value

            Next
        End With
    End With

    With Sheets("一覧2")
        .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, UBound(v)).Value = v
    End With

End Sub

ありがとうございました。

(栗吉) 2015/08/27(木) 15:32


コメント返信:

[ 一覧(最新更新順) ]


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