Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 : Excel 2013)
マクロの作成
投稿日時: 20/01/17 20:34:16
投稿者: ppp87654321ppp

EXCEL 2013で請求書を作成しています。
項目は(品目、単価、個数、金額)です。入力した項目をコピーして別のシートにデータとして貼り付、保存しています。
請求書の枚数が多いため、その都度、ボタンで自動保存したいと思っていますが、マクロが難しくてできません。また、データの最後のセル(行)の下に続けて保存していきたいです。
どなたか作っていただけないでしょうか?
よろしくお願いいたします。

回答
投稿日時: 20/01/17 20:47:56
投稿者: WinArrow
投稿者のウェブサイトに移動

↓のページに書かれている内容をよく読んでくださいね・・・
 
https://www.moug.net/faq/kiyaku.html
 
もろ、コードの作成依頼
です。
 
Excelには、「マクロの記録」という機能があります。
これは、手操作をそのままの形ですが、VBAコードを変換(作成)してくれる機能です。
一回にたくさんの操作をするのではなく、
小刻みにコードを作成していきながら、
このような手操作が、こんなコードになるんだ
というように理解を深めていけば、よいと思います。
上達すると思います。
 
どうしても他人にコード作成依頼しないといけない・・・ならば外注しましょう。

回答
投稿日時: 20/01/17 20:55:21
投稿者: WinArrow
投稿者のウェブサイトに移動

説明文の中で
言葉の使い方が、疑問視されるところがあります。
 
>別のシートにデータとして貼り付、保存しています。
 
この保存という言葉は要らないと思います。
貼り付ける
だけで充分です。
 
以下、文章の中の保存が出てきますが、
読んでいて、違和感を感じます。
 
保存ということばは、ファイル(ブック)をHDDなどの書き込むときに使います。
 

回答
投稿日時: 20/01/17 22:29:58
投稿者: MMYS

ppp87654321ppp さんの引用:

どなたか作っていただけないでしょうか?

専門業者に発注すれば

投稿日時: 20/01/18 06:49:34
投稿者: ppp87654321ppp

このようなマクロを作って実行しましたが、同じ行に上書きされてしまいます。
最下部の行の下に貼り付けるマクロがわかりません。
 
Sub Macro1()
'
' Macro1 Macro
'
 
'
    Range("C9:Q11").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

投稿日時: 20/01/18 06:51:25
投稿者: ppp87654321ppp

MMYS さんの引用:
ppp87654321ppp さんの引用:

どなたか作っていただけないでしょうか?

専門業者に発注すれば

 
申し訳ありませんでした。

投稿日時: 20/01/18 06:52:58
投稿者: ppp87654321ppp

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

回答
投稿日時: 20/01/18 10:07:17
投稿者: 半平太

>最下部の行の下に貼り付けるマクロがわかりません。
 
まず、最下部の行がどこなのか決定する必要があります。
 
通常、データが存在する最終行と同じなので、
こんなので最終行を決定します。
  ↓
Cells(Rows.Count, "B").End(xlUp).Row
 
しかし、レイアウト的にそんな決定方法ではマズい場合もあります。
例えば、最下行は合計欄が厳然と存在している場合。
 
なので、どんなレイアウトになっているのかを
先に説明しないと的確なアドバイスは得られないです。

投稿日時: 20/01/18 10:54:29
投稿者: ppp87654321ppp

Sheet1 請求書入力と印刷    Sheet2 データー入力のみ
以下のマクロでSheet2、にデーターを貼ることはできましたが2回目以降は上書きされてしまいます。
教えていただいたマクロはどこに挿入すればいいのでしょうか?
よろしくお願いいたします。
 
Sub Macro1()
'
' Macro1 Macro
'
  
'
    Range("C9:Q11").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

回答
投稿日時: 20/01/18 11:09:26
投稿者: 半平太

Range("B2").Select '←この文を下の文に変更する
 
Cells(Rows.Count, "B").End(xlUp).Offset(1).Select '最下行の下の行を選択

投稿日時: 20/01/18 12:05:32
投稿者: ppp87654321ppp

[quote="半平太"]Range("B2").Select '←この文を下の文に変更する
 
Cells(Rows.Count, "B").End(xlUp).Offset(1).Select '最下行の下の行を選択[/quote]
 
できました。本当にありがとうございました。[/b]