
VBA 初心者です。強縮ですがまたお力添え頂けたらと思います。
出来ないことが3点あります。。。
①売上データを基に請求書を作成するマクロを組んでいる所なのですが、ひとまず1枚のデータ基を請求書に転記するマクロは組めました。
次の段階として、2枚目以降のデータを対象の列から最終行を取得して貼り付ける。ということを行いたく、Cells(Rows.Count, "").End(xlUp).Rowを使うのは解るのですがデータ基の繰り返しForの値との組み合わせ?方がわかりません。
下記に1枚のデータ基を請求書に起こすVBAを記載いたします。
どこにどのように追記したらよいのか教えて頂けたらと思います。
また、請求書のD列を対象として小計1、小計2に再度新しいデータ情報をB~I列迄貼付を行いたいです。(B・C列は最初のみ ※写真1枚目参照下さい)
②データ基で金額(AC列)が0の場合はY~AB列の情報も転記せず次の内容に~としたいのですが
わからない状態です。(写真2枚目参照下さい)
IfでAC列が0の場合とするのはわかりますが組込み方がわかりません・・・
③データ基のブック名・シート名が一部変更になっても大丈夫なVBAを組もうと*を使って作ったのですがエラーが起きてしまいつくれませんでした。
ブック名・シート名共にD6までは固定で00101~どんどん変動していきます。
エラーの対応策をご教授頂けたらと思います。
※今は請求書作成をとりあえず先に。と1つの名前で作成しています。
周りにVBA組める人がいないのでここに頼ってしまい申し訳ありませんが宜しくお願い致します。
-------------
Sub 請求書作成()
'シートの指定
Dim wb1, wb2 As Workbook
Dim sh1, sh2 As Worksheet
Dim x, y, m, n As Long
Set wb1 = Workbooks("売上管理票(D600101).xlsx")
Set wb2 = Workbooks("請求書.xlsm")
Set sh1 = wb1.Worksheets("D600101")
Set sh2 = wb2.Worksheets("請求書")
x = 168 & y = 17 & m = 172 & n = 28
With sh2 '小計1
For x = 168 To 171
For y = 17 To 20
Cells(6, 2) = sh1.Cells(3, 14) '取引先名
Cells(17, 2) = sh1.Cells(2, 8) '案件コード
Cells(17, 3) = sh1.Cells(2, 14) '案件名
Cells(y, 4) = sh1.Cells(x, 25) '項目
Cells(y, 5) = sh1.Cells(x, 26) '数量
Cells(y, 6) = sh1.Cells(x, 27) '単位
Cells(y, 7) = sh1.Cells(x, 28) '単価
Cells(y, 8) = sh1.Cells(x, 29) '金額
x = x + 1
Next
Next
With sh2 '小計2
For m = 172 To 174
For n = 28 To 30
Cells(28, 2) = sh1.Cells(2, 8) '案件コード
Cells(28, 3) = sh1.Cells(2, 14) '案件名
Cells(n, 4) = sh1.Cells(m, 25) '項目
Cells(n, 5) = sh1.Cells(m, 26) '数量
Cells(n, 6) = sh1.Cells(m, 27) '単位
Cells(n, 7) = sh1.Cells(m, 28) '単価
Cells(n, 8) = sh1.Cells(m, 29) '金額
m = m + 1
Next
Next
End With
End With
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
取り合えず。
>Dim wb1, wb2 As Workbook
この宣言方法はwb2は確かにWorkbook型になりますが、wb1はValiant型になります。
他もそうですがVBAではこのような書き方で宣言する型の省略は出来ません。
VB.Net であればこの書き方でも同じ型の宣言としてみなされます。
>x = 168 & y = 17 & m = 172 & n = 28
書き方としては初めて見たので合っているのか否かは不明ですが、『何を目的としている?』と疑問はあります。
x = 168 : y = 17 : m = 172 : n = 28
これなら各変数への代入をしようとしているって事はわかりますけど。
>With sh2 '小計1~2
With ~ End With文として意味を成しているとは思えません。
>Cells(6, 2) = sh1.Cells(3, 14) '取引先名
右辺がsh1のシートを指しているとして左辺がsh2のシートのセルをってことであれば、
.Cells(6, 2) = sh1.Cells(3, 14) '取引先名
Cellsの前にピリオドを付けないとWith文とは繋がらないかと。
と本題からずれましたが、本題の回答については理解できていませんのでそちらは常連さん(過去質との関係あり?)にお任せです。
色々とご指摘ありがとうございます。まだ始めたばかりできちんと組み立て、理解が出来ていないのが現状なのでとても勉強になります。
手元のVBAは修正したいとおもいます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
マクロで最終行を取得してコピーしたい
Visual Basic(VBA)
-
VBA 空白行に転記する
Visual Basic(VBA)
-
-
4
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
5
VBA別シートの最終行の下行へ貼り付けされるようにしたいです。
その他(Microsoft Office)
-
6
【マクロ】対象データを別シートの最終行の下へ貼り付けをしたい。
Excel(エクセル)
-
7
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
8
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
9
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
10
VBA コピーして次の値まで貼り付けを繰り返す
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複雑なシフト表から...
-
エクセルの関数について
-
【マクロ】実行時エラー '424':...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
エクセルシートの見出しの文字...
-
LibreOffice Clalc(またはエク...
-
【マクロ】別ファイルへマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロで空白セルを詰めて...
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
excelの差込印刷で可視セルだけ...
-
エクセル:VBAで月変わりで、自...
-
VBAで条件が一致する行のデータ...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAでのシートの色が
-
複数ブックの複数セルの抽出教...
-
エクセルVBAで 2種のリストを...
-
【WORD差し込み印刷】複数レコ...
-
別シートから検索値に一致した...
-
Excelマクロ データが上書きさ...
-
ExcelVBA、印刷ページを事前に...
-
VBA別シートの最終行の下行へ貼...
-
エクセルでデータの検索
-
Excel VBAでシート内全体に非表...
-
[EXCEL]全てのチェックボックス...
-
VBA 最終行取得からの繰り返し貼付
おすすめ情報
請求書の画像です
データ基の画像です
VBAの修正、Withの意味がないとのことでしたのでWith文やめました。
再度きちんと質問させて頂くため、こちらの質問はクローズさせて頂きます。