
マクロ素人で途中まで作成したんですがこの後が分かりません。
教えて頂けますでしょうか?
見積書シートから請求書シートに転記したいのですが天気までは出来たんですが、次に転記した時に次の行に転記したいです。
今だと何度も同じところに転記する状態です。
アドバイスよろしくお願い致します。
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も見ています
-
【教えて!goo ウォッチ 人気記事】風水師直伝!住まいに幸運を呼び込む三つのポイント
記事を読む>>
-
別シートの最終行に貼り付けするマクロを教えてください。 シート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 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。
Visual Basic(VBA)
-
12
excelのマクロ実行でブロックされます。
Excel(エクセル)
-
13
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
14
エクセルはマクロを使用するのでパソコンに良くないので使用しないでと言われた。「なぜ?」
Excel(エクセル)
-
15
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
16
VBA 空白行に転記する
Visual Basic(VBA)
-
17
excel vbaでvlooupの変数がわかりません。
Visual Basic(VBA)
-
18
エクセル VBA 条件付き書式 簡略化したい
Visual Basic(VBA)
-
19
VBA&マクロのシート転記について。
Visual Basic(VBA)
-
20
Excel マウスなし操作の質問
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
数字の位ごとの値を表示するプ...
-
5
Excel-vba 文字列と変数を...
-
6
1つ前の値を変数に保存する方法
-
7
ラジオボタンの値の取得につい...
-
8
足して100になるような乱数のア...
-
9
C言語 乱数を階級分け
-
10
バッチファイルで正規表現を使...
-
11
Access2003 オートナンバーの現...
-
12
シグマのプログラムについて
-
13
VBAの定数の使い方で、計算値を...
-
14
相関係数p値の出し方
-
15
【C++/CLI】String型文字列の位...
-
16
VB6.0-整数と余りを求める
-
17
railsのControllerでフォームの...
-
18
VBで余りを求める
-
19
フリーランタイマーの時間差分...
-
20
vbaで極大値を抽出する方法
おすすめ情報
公式facebook
公式twitter