
マクロ素人で途中まで作成したんですがこの後が分かりません。
教えて頂けますでしょうか?
見積書シートから請求書シートに転記したいのですが天気までは出来たんですが、次に転記した時に次の行に転記したいです。
今だと何度も同じところに転記する状態です。
アドバイスよろしくお願い致します。
Sub 転記()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("見積書")
Set ws2 = Worksheets("請求書")
ws2.Range("B16:N33").Value = ws1.Range("B16:N33").Value
MsgBox "請求書へ転記が完了しました。"
End Sub

No.3ベストアンサー
- 回答日時:
duffer_dog です。
同じ見積もり先様への請求書を作成するのに見積書を何度かの作業に分けて入力し、各見積りを先に作成した請求書の下に加えていくということでしょうか?
だとすれば、仮に請求書の書式が見積書と同じとして項目見出しが第15行として合計が書かれている行を(30, 2)とした場合以下のようではいかがでしょうか。
※合計行(30, 2)が異なる場合は変数 e と t の値を変えてください。
-----
Sub 転記()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
'
Set ws1 = Worksheets("見積書")
Set ws2 = Worksheets("請求書")
'
Dim r As Integer ' 処理を開始する見積書の行番号
Dim l As Integer ' 転記する請求書の行番号
Dim e As Integer ' 合計を表示する行番号
Dim t As Integer ' 合計が書かれている列番号
r = 16
' 書式が異なる場合 e と l の値を書式に合わせてください
e = 30 ' 仮に第30行目に「合計」があるとする
t = 2 ' 仮に第2列目に「合計」があるとする
' 請求書の最終行を得る
' 「合計」の書かれている行から上に向かって値のあるセル
l = ws2.Cells(e, t).End(xlUp).Row
l = l + 1
'
Do While ws1.Cells(r, 2) <> "" ' 値が無くなるまで繰り返す
ws2.Range(ws2.Cells(l, 2), ws2.Cells(l, 15)).Value = _
ws1.Range(ws1.Cells(r, 2), ws1.Cells(r, 15)).Value
r = r + 1 ' 次の行へ移るため加算
l = l + 1
Loop
'
MsgBox "請求書へ転記が " & l - 1 & " 行目まで完了しました。"
End Sub
再度アドバイス頂き誠にありがとうございます。
解決致しました。
私の言い方が悪く大変ご面倒をお掛け致しました、今回の頂きましたものをそのまま入力致しましたら希望どおり動作いたしました。
大変助かりました、とても感謝いたします。本当にありがとうございました。
No.2
- 回答日時:
1行1行転記処理を行うマクロを組めば全行を転記できます。
品番のタイトル行の次の行を開始行(16)として1行づつ行(r)加算していき、品番。品名の値が空白(<>)になったら処理を終わる、というマクロです。以下見本の書式に従って組んでみました。
Sub 転記()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
'
Set ws1 = Worksheets("見積書")
Set ws2 = Worksheets("請求書")
'
Dim r As Integer ' 処理を開始する行番号
r = 16
'
Do While ws1.Cells(r, 2) <> "" ' 値が無くなるまで繰り返す
ws2.Range(ws2.Cells(r, 2), ws2.Cells(r, 15)).Value = _
ws1.Range(ws1.Cells(r, 2), ws1.Cells(r, 15)).Value
r = r + 1 ' 次の行へ移るため加算
Loop
'
MsgBox "請求書へ転記が完了しました。"
End Sub
ご連絡頂きありがとうございます。
とても詳しく教えて頂きそのまま書きもめましたのでとても助かりました。
アドバイス頂きましたもので作成してみましたがうまく次の行に移りませんでした、同じところに何度も転記されてしまいます。転記するたびに前回転記したものの下に転記されていくようにしたかったのですが。
でも本当に教えて頂きありがとうございました。
No.1
- 回答日時:
こんにちは
>次に転記した時に次の行に転記したいです。
次に転記する元がどうなっているのか不明なのでセンテンスにはできませんけれど、ws2の最終行が求められれば良いということと解釈しました。
仮にB列には必ず値があるものと仮定できるのなら、
ws2.Cells(Rows.Count, 2).End(xlUp)
で、B列の最終セルを取得できます。
(B列を基準にできない場合は、必ず値のある列を基準にしてください)
例えば、その次の行のN列までのセル範囲であれば、
ws2.Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, 13)
のような要領で、セル範囲として取得可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
-
VBA別シートの最終行の下行へ貼り付けされるようにしたいです。
その他(Microsoft Office)
-
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
4
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
5
エクセル最終行の下に貼り付け
Excel(エクセル)
-
6
ExcelのVBAで最終行の下にコピーする方法
その他(Microsoft Office)
-
7
別のブック最終行最終列の次への転記
Excel(エクセル)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
10
エクセルで入力シートから別シートに蓄積方法について
Excel(エクセル)
-
11
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
12
VBA 空白行に転記する
Visual Basic(VBA)
-
13
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
18
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
19
VBAで、強制保存してブックを閉じるには?
Visual Basic(VBA)
-
20
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
フォームを開くときに、コンボ...
-
5
相関係数p値の出し方
-
6
数字の位ごとの値を表示するプ...
-
7
フリーランタイマーの時間差分...
-
8
VB6.0-整数と余りを求める
-
9
エクセル マクロ 選択と貼り付...
-
10
1つ前の値を変数に保存する方法
-
11
LOG(10)2の意味は?
-
12
Access2003 オートナンバーの現...
-
13
Nullってどういう意味ですか?
-
14
C#.netでの切り上げ処理について
-
15
C言語 exitの使い方
-
16
世界のナベアツ
-
17
C# WinForm のDataGridView Cel...
-
18
Rubyで1ミリ秒のsleepできない...
-
19
Xorshiftの値を絞り込む方法を...
-
20
【C++/CLI】コンボボックスの値...
おすすめ情報
公式facebook
公式twitter