プロが教えるわが家の防犯対策術!

いつもお世話になりありがとうございます。

質問その 1
①請求書の作成 ②印刷 ③関数の挿入のコードをそれぞれ記入しました。
一つのボタンでマクロを実行したいのです。
end with で追加しましたが、うまくいきませんでした。

質問その 3
③関数の挿入でデバック表示を修正したいです。
「管理表」シートのn4にg4が指定する数だけ変更したいです。

ご教授お願いします。

「エクセルvba ①SUBメニューを追加し」の質問画像

A 回答 (4件)

後ろから


④一つのボタンで以下の3種類を実行したいのですが、マクロの登録が1つしか選べないのです。

は?
念の為、うかがいたいのですが、三つに分けておく必然も
あるのですか?
もしなければ、コードの中身を一か所に詰め込んでしまうだけです。
なぜ、そう考えないのか、逆に理解できないです。

もし分けておく必然があるとして
連続して三つ呼ぶのを設けるなら
sub test()
call sub1
call sub2
call sub3
end sub
こんな感じです。

>③関数の挿入です。
> G列      N列    M列
> 請求間隔   請求開始  請求期間終了
>  3        6/1    8/31
>N列の「請求開始」の部分の相談ですが、プリントアウト実行後に次回請求日に書き換えたいのです。


なぜ、関数の挿入なんですか?
手でそれを試しましたか?
関数で実現できるんですか?
手でうまくいってないことが、マクロだから出来る理由は
到底僕には考えられません。
なぜかって?
数式の中にそのセルを使うことは循環参照ってエラー出ますよね?

>6月1日の請求書をプリント後、N列の請求開始を9/1にしたいのです。
このままでいいのでは?
それがedateだったか。なるほどね。
自分で使わないから、edateって何だったっけと思ってた。
そこに関数を書くんじゃなくて
Range("n4").Formula = WorksheetFunction.EDate(Range("n4"), Range("g4"))
とワークシート関数で計算するなら、この値というのを代入します。

WorksheetFunctionを使う場合、カッコ内もセルなら
VBAでのセルの扱いにしないといけない点にご注意下さい。

ただね、管理表シートはどこへ行ったんですか?
請求書をコードでは選択していますよね。
ここは説明貰わないと理解できないです。

ここでちょっと振り返りましょう。
>質問その 3
>③関数の挿入でデバック表示を修正したいです。
>「管理表」シートのn4にg4が指定する数だけ変更したいです。

関数の挿入と思い込んでるのは置いといて、「デバッグ表示を修正したい」
これが明らかにおかしいんです。
デバッグ表示がなぜ出るんでしょう。
そうです。
あなたのコーディングに何らかの間違いがあるからです。
多分循環参照が出たのではないですか?
間違ってるのにデバッグ画面が出なかったらそれの方が
大問題ですよね。

ここでもしこれを尋ねるなら、どの行で何というエラーが
表示されるのを直したいとか、尋ねるべきなんです。

例えていうなら「ブレーカーが落ちるので、ONに固定しておきたい」
みたいな。電力使う量減らさないとね。

原因の方が尋ねるべきことである点は覚えておいてください。

そしてその次、管理表シートのくだりは、いまならどう説明されます?
伝えるための要件がいくつも抜けてますよね。
    • good
    • 0
この回答へのお礼

こちらの言葉不足で、申し訳ありませんでした。
まずはお詫び申し上げます。

ご教授ありがとうございます。
①SUB翌月転記の部分のコードありがとうございました。
転記出来ました。

②SUBを3つに分ける必要は無かったです。私のミスでした。
subを外したら、無事解決できました。

思い通りのモノが出来上がり、感激しております。
私一人の力では出来ませんでした。
大変感謝しております。
ありがとうございました<m(__)m>

お礼日時:2017/06/15 21:18

>①請求書作成でシンプルにできる方法をご教授お願いします。


が抜けた。

でも、あなたの質問は本当にどうしてこうなんでしょう?
想像できませんか?
請求書を発行するにあたって、会社によって環境が異なります。
ただ請求書が必要なら手書きでいいんだし、ワープロでも
構わない。でもEXCELを使いたいならそこに理由があるはずだ。
合計が計算できるから?
それなら請求書テンプレートで事足りますよね。
あなたにとって必要な事が誰にでも必要ってものじゃないでしょ?

それなのに、シンプルってただ尋ねる。
あなたが必要な事は、あなたにしか判り得ないのに
そんな訊き方って・・・・。
    • good
    • 0
この回答へのお礼

言葉が足りず、お気を悪くさせてしまって、申し訳ありませんでした。

NO.2の回答をいただいた時に、で「ループ」で出来るのかと思ってしまいまして。
SUB請求書のコードを読み直すときに、シンプルの方が確認しやすいかと思いまして…
vbaの本で勉強中で、色々なコードを使ってみたいと…

これからもご教授頂きたいです。

お礼日時:2017/06/15 20:53

ま、あんまりつれない返事もどうかと思うので


End With を End Subに変更すれば
そこは動きそうな。

ちょっとコードを論じたいけど、どうして画像にしたんでしょうね?
コピペできないのがツライ・・・・。

最初の請求書作成()同じ構文が延々と並んでるでしょ?
動きゃいいっちゃ、それまでですが
プログラムなのに、いまいちスマートじゃない気がしません?
ま、方法論は多数あるので、具体的には挙げませんが
ループにしたいとこですね。僕なら。
将来、コピー先、コピー元のセル座標に追加や変更があったとき
探しにくいじゃないですか?
コードにこういう形で埋め込むよりも
セルに置いて、そこだけ編集できるのが便利と思います。

請求書印刷の
Sheets("請求書").Select
ActiveWindow.SelectedSheet.PrintOut

Sheets("請求書").PrintOut
で十分です。
マクロ記録はマウスで操作するのでSelectが多数入りますが
要らない場合が90%位はあるので、可読性(読みやすさ)向上のために
出来るだけ、なくせるところは省略することをお勧めします。

最後に
>質問その 3
>③関数の挿入でデバック表示を修正したいです。
>「管理表」シートのn4にg4が指定する数だけ変更したいです。
その2と②は取りやめになっちゃったのかな?

いやぁ、それにしても日本語が険しいですねぇ。
「「管理表」シートのn4にg4が指定する数だけ変更する」
なんの事でしょう?
僕の洞察力が足りないのかな?
少なくともコードを見る限り管理表シートは
一度も出現してませんね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
以前も沢山お世話になり、重ねてお礼を申し上げます。

①請求書作成でシンプルにできる方法をご教授お願いします。

③関数の挿入です。
 G列      N列    M列
 請求間隔   請求開始  請求期間終了
  3        6/1    8/31
N列の「請求開始」の部分の相談ですが、プリントアウト実行後に次回請求日に書き換えたいのです。
6月1日の請求書をプリント後、N列の請求開始を9/1にしたいのです。

④一つのボタンで以下の3種類を実行したいのですが、マクロの登録が1つしか選べないのです。
ご教授お願いします。

補足にコードを添付します。

お礼日時:2017/06/15 17:43

回答の前にさ、


End With
って With文の終わりの明示だから
そこまでが With文の有効範囲ですよってことですよ。
当然Withが前になければこけます。

逆にSubは必ず
End Sub
で閉じないと次のSubは書けません。

ABCが分からないで文法を聞いても
無理があるのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!