前回質問詳細
https://oshiete.goo.ne.jp/mypage/history/question/

解決で出来て、感激のあまり…早とちりして、締め切ってしまいました<m(__)m>
大変失礼して、申し訳ございませんでした。

ループの使い方をご教授お願いします。
Sub 請求書作成()

Worksheets("請求書").Range("a2").Value = Worksheets("管理表").Range("c4").Value
Worksheets("請求書").Range("a3").Value = Worksheets("管理表").Range("d4").Value
Worksheets("請求書").Range("b4").Value = Worksheets("管理表").Range("b4").Value
Worksheets("請求書").Range("c14").Value = Worksheets("管理表").Range("a4").Value
Worksheets("請求書").Range("c17").Value = Worksheets("管理表").Range("g4").Value
Worksheets("請求書").Range("b18").Value = Worksheets("管理表").Range("h4").Value
Worksheets("請求書").Range("b20").Value = Worksheets("管理表").Range("m4").Value
Worksheets("請求書").Range("d16").Value = Worksheets("管理表").Range("o4").Value
Worksheets("請求書").Range("b16").Value = Worksheets("管理表").Range("n4").Value

ループという技を是非取り入れてみたいです。

ご教授お願いします。

質問者からの補足コメント

  • 添付の写真が管理表のシートです。
    A列番号は順番にはなっていません。(管理番号みたいなものです。)
    A列は50行まで表があります。

    お手数ですが、前回の質問の時のコードに上書き記載お願いしてもよろしいでしょうか?

    「続き…エクセルvba ①SUBメニューを」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2017/06/15 23:35
  • お世話になります。
    改めて考え方を変えてみました。
    「管理表」のn2に検索値を設けたかったので、If Target.Address = "$n$2" Then
    に入れ替えてみました。
    そうすると、請求開始日を変更するコードの  Range("n5").Formula = WorksheetFunction.EDate(Range("n5"), Range("g5"))
    がn5はちゃんと起動しますが、n6以降が動かないです。

    管理表の画像を添付します。
    ご教授お願いします。

    ★「請求書」にvlookをいれてみました。
    これで請求書に転記出来ました。
    プリントアウトのコードを入れました。

    「続き…エクセルvba ①SUBメニューを」の補足画像2
    No.4の回答に寄せられた補足コメントです。 補足日時:2017/06/17 15:22
  • ごめんなさい(慌慌)
    請求書に書いたvlookを消しました(汗)
    動作確認してみました。
    管理表のシートから請求書シートに転記されないです。
    私の上書きミスだと思うのですが。
    ご教授お願いします。
    請求書のシート添付します。

    管理表のn2で請求書に転記するって自己流で上書きしみました。文字オーバーで一部抜粋です。
    コード変更箇所です。
    Address = "$n$2" Then

    請求書と管理表の文字を入れ替えました。Worksheets("管理表")の部分3か所です。

    「続き…エクセルvba ①SUBメニューを」の補足画像3
    No.12の回答に寄せられた補足コメントです。 補足日時:2017/06/17 16:19
  • 大変心強いです。ありがとうございます。

    請求書シートのc16に=管理表!N2と入れたら成立出来ました。
    これで大丈夫でしょうか?

    >イミディエイトウィンドウに
    ? Target.Address
    と打って何が表示されたか教えてください。

    >地道な作業ですけど、これをちゃんと出来ないで
    理解はほぼ不可能といってもいいと思います。

    一行づつ辿っていって、コードの動作を把握したいと思っているんですが、うまくできません。
    画像を添付します。

    ご教授お願いします。

    「続き…エクセルvba ①SUBメニューを」の補足画像4
    No.22の回答に寄せられた補足コメントです。 補足日時:2017/06/18 16:30
  • ステータスが無いと表示されたので、あれこれ調べていました。
    ごめんなさい(汗)出来たと思っていたのは、消したとばかり思っていたvlook関数が入っていました(/o\)
    vlookを消して請求書シートに頂いたコードを入れて、請求書の番号”c16”に管理番号を入れても無反応でしたので、
    ステップ実行しました。
    画像を添付します。
    管理表と請求書は補足で送った通りのモノで変わりはないです。

    私が無知過ぎて、yokomayaさんの大切な時間を割いていただいてるのが、心苦しくって。
    VLOOKUP関数を使って、管理表のn2に検索値を設けて、請求書に内容を添付させることにします。

    以前回答頂いた、
    Range("n5").Formula = WorksheetFunction.EDate(Range("n5"), Range("g5"))
    でn6以降50列分同じ操作出来るコードはありますか?

    「続き…エクセルvba ①SUBメニューを」の補足画像5
    No.23の回答に寄せられた補足コメントです。 補足日時:2017/06/18 21:10
  • 諦めなくっていいんですか…ありがとうございます。
    私も本当は最後まで完走したいんです。

    どうしたら簡単で分かりやすいシートになるのかも、デザインから見直していて、ずっと悩んでて、作り直したりしてしまって…
    一番最初質問から大分変ってしまいました。

    コードが読めないので、注釈もお願いします。

    補足出来るところを見つけたので、
    管理表シートを添付します。
    画像が一つしか添付できないので、2つに分けて、請求書は後からすぐに送ります。

    本当にありがとうございます。
    諦めかけたのに、先が見えてきそうで、うれしいです。

    「続き…エクセルvba ①SUBメニューを」の補足画像6
    No.3の回答に寄せられた補足コメントです。 補足日時:2017/06/18 23:02
  • 引き続き、請求書シートを添付します。

    甘えっぱなしで、本当に恐縮です。
    お手数ですが、今後も勉強用サンプルとして大事にしていきたいので、コードと注釈
    お願いします。

    「続き…エクセルvba ①SUBメニューを」の補足画像7
    No.17の回答に寄せられた補足コメントです。 補足日時:2017/06/18 23:11
  • ごめんなさい。

    ①座標はあります。

    ②コードの前を選択して、一列茶色い●と茶色く反転されて、カーソル行の前まで実行やF5を押しても、「実行可能なステートメントがありません」になるのです。

    「続き…エクセルvba ①SUBメニューを」の補足画像8
    No.14の回答に寄せられた補足コメントです。 補足日時:2017/06/19 00:40
  • 今こんな状態です。今晩送った画像が最新です。

    この画像は4枚目。

    ごめんなさい。勝手に色々手を加えててしまって、VLOOKUPした時に座標シート消してしまってたり、21時のは座標シートが無かったです。

    勝手なことしてて、本当にごめんなさい。

    「続き…エクセルvba ①SUBメニューを」の補足画像9
      補足日時:2017/06/19 01:17
  • 今この状態です(>_<)

    「続き…エクセルvba ①SUBメニューを」の補足画像10
    No.28の回答に寄せられた補足コメントです。 補足日時:2017/06/19 01:22

A 回答 (32件中21~30件)

>どのようにしたら、どの行からも引っ張れるのでしょうか?是非試してみたいのですが…


それをNo4に書きました。
進まない・・・・・。


そう大事なことが抜けてた。
このマクロの起動はC14に管理番号を入力することが
契機になります。
ですから見た目的にはVLOOKUPで表示しているのかなという
感じになるマクロです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
ymkomayaさんのおっしゃる通り50個ボタンは非効率でした。
違うシートにデータが転記される事にこだわり過ぎていました。

ご指摘下さった事を大変感謝しています。

教わった座標のテクニックとvlookをを使って、もう一度改めて表を作ってみます。

お礼日時:2017/06/17 14:06

なるほどね。

に続けてコードの貼り方も書いたのですが、よまれてますか?
    • good
    • 0

違います。

No4で僕が書いたのは請求書シートでそのまま動くものを書いたつもりです。ですから動作確認をお願いしたいと思ってこちらではデータがないので動作確認ができなかったので
    • good
    • 0

逆説を言えばその450種類が1行になってるんです。


50じゃないからそれ以上だけど。

勿論それ以外の付随する行はかなりあるけど
コアになるセル代入は1行です。

僕はこれこそがプログラムと思うんですよね。

何の為にプログラムするかって、横着したいからですよ。

逆に意味のない長時間労働に駆り立てられたら
誰だって嫌じゃないですか?
    • good
    • 0
この回答へのお礼

お世話になります。
請求書のシートでvlookupで。って事でしょうか?

お礼日時:2017/06/17 12:32

でも、気づいたことがあります。



僕とあなたの根本的な発想の違いというか
あなたは何が出来たらいいなという処から
出ていかないんだ。
僕にも勿論それは、あるけど、作るとなれば、
まず実現可能なのは何だで始めるんです。

実現の目途がないこと、考えても時間の無駄じゃないですか?

だから、労力を膨大にかければ出来るかも知れないけど
こんなところで議論するのは、プラモ作り程度の話で
無理難題(勿論その線引きがあなたに出来ると思っている
訳ではないけれど)を、僕は論議したくないんですよ。

結論から言えば、管理表のボタン50個には賛同しないし
それを考える積りもありません。
そのメリットが判らないから。

試してもらえてないのかもしれないけど、No4のコードは
どの行のデータも引っ張ってきます。
50行の制約もない。

僕には譲歩の余地はありません。
    • good
    • 0
この回答へのお礼

>試してもらえてないのかもしれないけど、No4のコードは
どの行のデータも引っ張ってきます。

どのようにしたら、どの行からも引っ張れるのでしょうか?是非試してみたいのですが…

書類を一から作るのは難しいです。
一生懸命考えたんですけど(涙)センスがなくて…
使えない管理表を作ったってことなんですね⤵
落ち込んでしまいました。

今日はもう寝ます。
今日もご指導ありがとうございました。
おやすみなさい。

お礼日時:2017/06/17 02:13

9×50で450箇所ですよ?


何の為にプログラムにするんですか?
マジで、そう考えてるならイかれてるとしか。
実際そんなに沢山単純作業して一つも間違えない自信あるんですか?
また、間違えてたらそれを見つける自信もあるんですか?
僕なら全くあり得ない!
    • good
    • 0
この回答へのお礼

vbaを勉強中で、本を読みながら進めています。
勉強用として色々試している状況です。
初心者向けの本では基礎しか載っていないので、どうしてもわからない時は質問コーナーを利用させていただいています。
残念ながら、仕事用ではないです。将来的には自分で色んなコードが書きたくて。
VBA出来ますって履歴書に書きたいなって。
普通はありえないような組み方をしてしまったのもそのような事情です。

ご容赦ください。

お礼日時:2017/06/17 01:57

>請求書のc14は管理表から持ってきている枠になります。


別に揚げ足取りをしたいわけじゃないけど・・・。

c14は、A列から持ってきてるから管理番号ということは
上げてくれた補足と元のコードから
僕がそう理解していることは伝えたつもりです。

日本語がね。

「管理表から持ってきている枠になります。」
壊滅してません?

C14に限らず、それ以外もぜぇんぶ、管理表から持ってきてるのは
貴方のこのスレッドの最初のコードから明々白々ですよね?
しかも持ってきてるのは中身で枠なんか運んでないですが・・・。

言いたいことは何だったんでしょう?


>締め日は契約者毎違うのと、請求額は決まっているので、管理表のみの操作で請求書を>転記して、発行したかったのです。

それをいうならNo3,の
どうやったら4じゃないものが当てはめられるの?
ボタンごとに4の部分を切り替えられる仕組みはどうなってるの?

に答えてからにしていただけませんか?

つまりあなたの最初のコードでいうと
Worksheets("管理表").Range("c4").Value
50回コピーしても全部の行で4の部分が変更必要なのは
わかりますか?
それをどう解決できるかがなくて、希望だけ言っても
何も始まりません。
    • good
    • 0
この回答へのお礼

いつもお世話になります。
>それをいうならNo3,の
どうやったら4じゃないものが当てはめられるの?
ボタンごとに4の部分を切り替えられる仕組みはどうなってるの?

については、知識不足の為お恥ずかしいのですが、50回コードをコピーして4を5に手打ちで上書きしようと思っていました↷
今後、修正等があったら、50回直すより、見やすいコードがあればと…

お礼日時:2017/06/17 00:31

今日はもう寝ます。

また明日。
試すのにも、時間必要だろうし。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私も明日試してみます。
お疲れさまでした。
おやすみなさい。

お礼日時:2017/06/16 01:09

補足の画面ありがとう。


ここでいう管理番号ってのが重複がないものなら
僕がいってたキーに使える訳。

折角書いたコードだから流用を考えるなら
請求書シートにこの管理番号を入力するセルを
それがc14か、なるほどね。

請求書のシート名を右クリックして
コードを表示に以下を貼る。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range, fd As Range

If Target.Address = "$C$14" Then
Set fd = Worksheets("管理表").Columns(1).Cells.Find(Target.Text)
If Not fd Is Nothing Then
Application.EnableEvents = False
For Each rg In Worksheets("座標").UsedRange.Columns(1).Cells
Worksheets("請求書").Range(rg).Value = Worksheets("管理表").Range(rg.Offset(0, 1).Text & fd.Row).Value
Next
Application.EnableEvents = True
Else
MsgBox Target.Text & "は登録されていません"
End If
End If
End Sub

動作未確認だけど試してみて。

これでC14に入力した時に他のセルにも値が入るはずだから。
4じゃない行をどうやったら拾えるかの解だから。
この回答への補足あり
    • good
    • 0
この回答へのお礼

>これでC14に入力した時に他のセルにも値が入るはずだから。
4じゃない行をどうやったら拾えるかの解だから。

初歩的な質問で恐縮ですが…
vlookを請求書に入れた場合は座標コードはどうなってしまうのでしょうか?
管理表のプライベートモジュールに入れたんですが、動きの理屈の理解が追い付いてこないです(汗)

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

>管理表はまだ作っている段階ですが、50行分あります。



正直不思議なことを物凄く平然というよね。

なぜ請求書が50件と限定されているの?
貴方の会社ではそれ以上請求書発行はしないの?

コマンドボタンを50個?
やけにごちゃごちゃしたシートだなぁ。

でね、もっと不思議なのが
>完成したコードを50個コピーするよりも、良い方法を
50個コピーじゃ駄目だよね。
4じゃないんでしょ?
どうやったら4じゃないものが当てはめられるの?
ボタンごとに4の部分を切り替えられる仕組みは
どうなってるの?

あえて僕なりの考えをいうと印刷ボタンは請求書の
方に付けて、請求書のどこかに(管理表にもだけど)
どの行のデータを引っ張り出すかの
キーっていうけど行を識別するものを設けておいて
それに応じてマクロ書かなくてもVLOOKUPないしは
MATCH&INDEXで拾えるんよね。
例えば請求書番号でもいいし、請求先+連番とかでもいい。

てことで、事実上 書いたコードは意味ないなあと
思いつつ。

>頂いたコードをどこに付けたらよいのかわかりませんでした。

Sub 請求書作成()
の中身9行ありますよね。
それ全部を僕が書いたコード4行に置き換える
それだけですよ。

どこに付けたらって。
予測できない返答は流石・・・。
この回答への補足あり
    • good
    • 0
この回答へのお礼

こんにちは。
いつもありがとうございます。

請求書のc14は管理表から持ってきている枠になります。
締め日は契約者毎違うのと、請求額は決まっているので、管理表のみの操作で請求書を転記して、発行したかったのです。
請求書シートからのvlookも考えたのですが、管理表からボタン一つで起動できるなら便利かと思って、試してみた次第でして(汗)
SUB請求書のコードの請求書と管理表の順番が違っていたのかなもしれないです(汗)
もしかして、このせいでNO.4で頂いたコードの趣旨が違ってきますか?

お礼日時:2017/06/16 17:49

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


人気Q&Aランキング

おすすめ情報