売上台帳から下記条件で請求書を作成したいのですが、(1)の条件の記述がどうしても出来ません。
● 御指導いただきたき事
1.(1)の記述方法を御教示お願い致します。
2.(2)の記述の誤謬のチェックをお願いいたします。
売上台帳はC列に月 ・D列に日・・・・L列に金額が入力されています。A1に 6 と入力(6月分を作成する)
A2に 25 と入力(締切日が25日です)
(1)A1が 6 でA2が 25 ならば売上台帳の5月26日から6月25日分までのデータをコピーする
(A1が 7 でA2が 月末 ならば売上台帳の7月1日から7月31日分までのデータをコピーする)
(2) コピーしたデータを AA11を基点に値を貼り付ける
Sub コピー貼付()
Range("C1:L9").Copy
ActiveSheet.Paste Destination:=Range("AA11")
Range("Z1").Select
Application.CutCopyMode = False
End Sub
No.1ベストアンサー
- 回答日時:
>売上台帳は
縦(列)に1日1行か
1日複数行か
1日分は行的に固まっているのか。
そういうデータの状況のことを書かないと、それらによって大幅に処理ロジックが変わる。模擬実例を挙げよ。
読者には売上台帳が見えないことを忘れるな。
ーー
A1に6、A2に25と入っているシートと売上台帳は同じシートか
(ブック)シート、(行、列)、データの並び順を明確にして質問のこと。
ーー
年指定の問題は、面倒でも1セル指定するようにすべきだ。
またVBA初心者なら、月末というのをやめて31日、30日、28日、29日を具体的に入れる設計の法が良いと思う。コードが増えるだけ。
ーーー
初心者のうちはCopyメソッドより、他セルに値代入をお勧めする。
経験から、コピー法は初心者にはなれるまで難しいと思う。
ーー
日付はエクセルでは日付シリアル値という整数値であることをご存知か。大切なことです。これが判れば、日付の前後は整数の大小に帰する。
ーー
参考コード
範囲日付の抜き出し
日付条件は同一シート(A1,A2とする)。2008年仮定。
Sub test01()
e = DateSerial(2008, Range("a1"), Range("a2"))
'MsgBox e
s = DateSerial(2008, Range("a1") - 1, Range("a2")) + 1
'MsgBox s
d = Range("a65536").End(xlUp).Row
For i = 3 To d
hi = DateSerial(2008, Cells(i, "C"), Cells(i, "D"))
'MsgBox hi
If (hi >= s) And (hi <= e) Then
MsgBox hi
'日付条件を満たす。他シートナリに値を代入。
End If
Next i
End Sub
MsgBoxのシングルコーテーションを順次はずして実行し、正しい結果になるかチェック・納得してみて。
ーー
他シートに代入する場合の書き方は少し経験が要る。
まずそういうことを勉強して、判らない場合は質問して、課題解決に進めるべきだ。
どういう要素技術(=コード記述)がいるかが整理できないなら、こんな仕事に関連したことに、今は着手すべきでない。
この回答への補足
imogasi様
長文の御指導ありがとうございます。
長文になりますが、御判読いただき御指導いただければ幸甚で御座います。
>売上台帳は
縦(列)に1日1行か
月/日/注文番号/商品コード/品名/数量/単価/納品金額/入金額/備 考
0/0繰越金額1,547
5/25 123 525AAA5.25 3.00 16
5/26 5-26 526BBB526.00 26.00 13,676
6/ 1 6-161CCC61.00 16.00 976
6/ 1 6-1-11231DDD3.00 123.13 369
6/20入 金 15
6/25 6-25625EEE625.00 65.00 40,625
6/26 6-26626FFF626.00 26.00 16,276
合 計73,485 15
>1日複数行か
● 固定していません。
1日分は行的に固まっているのか。
そういうデータの状況のことを書かないと、それらによって大幅に処理ロジックが変わる。模擬実例を挙げよ。
>読者には売上台帳が見えないことを忘れるな。
● 解りました
>A1に6、A2に25と入っているシートと売上台帳は同じシートか
● 同じシートです
(ブック)シート、(行、列)、データの並び順を明確にして質問のこと。
ーー
>年指定の問題は、面倒でも1セル指定するようにすべきだ。
● 上記御指示の意味は
1.例えば A3に指定する
2.表に 年 の列を設ける
3・表に 年 の列を設け A3 で指定する
>またVBA初心者なら、月末というのをやめて31日、30日、28日、29日を具体的に入れる設計の法が良いと思う。コードが増えるだけ。
● 解りました
>初心者のうちはCopyメソッドより、他セルに値代入をお勧めする。
● 値代入の記述方法を教えてください。
日付はエクセルでは日付シリアル値という整数値であることをご存知か。大切なことです。これが判れば、日付の前後は整数の大小に帰する。
● 忘れていました。
>参考コード
Sub test01()
'参考コード
'範囲日付の抜き出し
'日付条件は同一シート(A1,A2とする)。2008年仮定。
●エラーメッセージ(変数が定義されていません)が出ましたので下記5行追加してみました。
'
Dim e As Integer
Dim s As Integer
Dim d As Integer
Dim i As Integer
Dim hi As Integer
●ヘルプを見ましたが理解出来ず試行したのはここまでです。
e = DateSerial(2008, Range("a1"), Range("a2")) '← エラーメッセージ(オーバーフローしました。)
'MsgBox e
s = DateSerial(2008, Range("a1") - 1, Range("a2")) + 1
'MsgBox s
d = Range("a65536").End(xlUp).Row
For i = 3 To d
hi = DateSerial(2008, Cells(i, "C"), Cells(i, "D"))
'MsgBox hi
If (hi >= s) And (hi <= e) Then
MsgBox hi
'日付条件を満たす。他シートナリに値を代入。
End If
Next i
End Sub
'MsgBoxのシングルコーテーションを順次はずして実行し、
'正しい結果になるかチェック・納得してみて。
End Sub
MsgBoxのシングルコーテーションを順次はずして実行し、正しい結果になるかチェック・納得してみて。
ーー
>他シートに代入する場合の書き方は少し経験が要る。
●出来ればSheet2に作成したいと思っています(売上台帳がSheet1)
>まずそういうことを勉強して、判らない場合は質問して、課題解決に進めるべきだ。
●解りました。
>どういう要素技術(=コード記述)がいるかが整理できないなら、こんな仕事に関連したことに、今は着手すべきでない。
●リタイアした68歳の勉強中の初心者です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) 【マクロ】PasteSpecialメソッドにて、コードが動かない理由が分かりません 2 2023/08/15 20:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
access2021 印刷プレビューでの...
-
accessデータを指定したExcel、...
-
Accessのクエリで、replace関数...
-
Accessのテキストボックスの入...
-
Microsoft365にAccessってあり...
-
Vba Userformを前面に出すについて
-
Accessのフォーム上のテキスト...
-
実行時エラー3131 FROM 句の構...
-
【Access】Dcount関数の複数条...
-
Access で半角スペースと全角ス...
-
access2019 チェックボックスと...
-
access クエリ yes/no型のクエ...
-
Accessのクエリの結果を、既存...
-
ACCESS VBA でのエラー解決の根...
-
Access VBA [リモートサーバー...
-
Access VBA でHTML文を表示したい
-
ACCESS2019でのエラーメッセージ
-
Access 複数条件検索の設定が上...
-
Accessのスプレッドシートエク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
ACCESS VBA でのエラー解決の根...
-
Accessのスプレッドシートエク...
-
Access VBA を利用して、フォル...
-
【Access】Dcount関数の複数条...
-
accessデータを指定したExcel、...
-
Accessレポートのチェックボッ...
-
Access VBA [リモートサーバー...
-
Vba Userformを前面に出すについて
-
Accessのリンクテーブルのパス...
-
実行時エラー3131 FROM 句の構...
-
Accessのフォーム上のテキスト...
-
CSVファイルの「0落ち」にVBA
-
Access 複数条件検索の設定が上...
-
アクセス 削除するレコードを含...
-
Access で半角スペースと全角ス...
-
access 更新クエリについて
-
Accessのクエリの結果を、既存...
おすすめ情報