こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAについての質問です。

原本にて、
○月  日( )    時に行きます。
という文字が、結合された一つのセルに入力されている状態で、
別シートに15分単位ぐらいでリストが作られています。
そのリストを上から順に空白のスペースにもともと入力されている物の中に組み込みたいのですが、そんなことは可能なのでしょうか?

めんどくさい質問で大変恐縮ですが、よろしくお願いします。

投稿日時 - 2018-07-03 09:36:46

QNo.9514704

困ってます

質問者が選んだベストアンサー

> VBA自体に、今ある文字列を組み合わせて、一つの文章を作っていく。という解釈で間違ってないでしょうか?

そうですね。参考のコードはVBAのコードの中に「○月  日( )    時に行きます。」を取り入れてリストのデータ(一つのセルに2018/7/1 18:00:00
のように日付データとして入っているものと考えています)を組み入れています。結果「7月1日(日)18時に行きます」と合成されます。
原本の文句が決まり文句で変更がないのでしたら問題はないと思います。

原本が何かの定型文書でそこの1項目をリストから引き出すのでしたら一つ引き出すたびに「何か」をしないと結果的に最後のデータが表示されるだけで終わります。

たとえば、請求書のひな型の宛先などをリスト一覧から次々埋める場合、一個のデータで宛先などを埋めた後に「印刷をするという動作か何か、個々に保存か出力」をしないとリストの最後のデータを埋め込んだものしか結果として残らない。

投稿日時 - 2018-07-03 14:13:32

お礼

なるほど!ありがとうございます。!

最後のものしか残らないことに関しては、一つ変更したらそれを印刷、という風に今マクロを組んでいますので、大丈夫だと思います!

お答えいただいたVBAで一度試してみたいと思います!
ありがとうございました!

投稿日時 - 2018-07-03 15:01:37

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

質問に下記の点を、補足することを勧める。
セルに入れる文字列を作る課題のようで、難しい点は少ないと思う。
それより関係シートは2つだろうが、Sheet1(原本?)とSheet2と名前を仮定して、
・特にアウトプットのSheet2のデータ状態(行と列)を例示して)、かつ、
・Sheet1の完成形を、質問に掲示するべきものだ。
回答をコピペで済まそうという、問者のレベルなら、回答VBAコードを
修正する力が十分ないのだから、質問例は具体的に書かないと、回答が無駄になるだけ。
多分、要点は、文字列の結合の&と、Format関数(=日付時刻を書式的に整える)で済むのではないか。

投稿日時 - 2018-07-03 12:51:06

お礼

ご回答ありがとうございます。
自分ではどこをどのように補足及び説明したらいいのかわからなかったので、助かります!

原本に、
○月  日( )    時に行きます。
と結合セル入っていて、リストに12:00~12:15が15分ごとと日付、曜日が入っている状態で、リストから1行ずつ引用して原本の○月  日( )    時に行きます。の空いているところに組み込めないかな?と思いまして。

請求書とかをVBAでやっている動画などを見ていると、既存の原本に数字や商品名などを上書き?組み合わせ?をして、入力すべきところにリストから引用していたので、そんな風にするにはどうしたらいいのか?と思い、質問させていただきました。

投稿日時 - 2018-07-03 13:23:12

ANo.2

リストのデータを原本の文字列に組み入れて何をしたいのかがわからないのですが(原本の文字列の位置を変化させずにすべて組み入れると最後のデータのものしか残らない)
一応たたき台として
原本のA1からリストのデータ分下方向に書き出してみます。
原本の文字列はとりあえずVBAに書き込んでいます。

Sub Example()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range
Dim i As Long

Set Sh1 = Sheets("Sheet1") '原本のシート名
Set Sh2 = Sheets("Sheet2") 'リストのシート名

i = 1

For Each c In Sh2.Range(Sh2.Cells(1, "A"), Sh2.Cells(Rows.Count, "A").End(xlUp))
Sh1.Cells(i, "A").Value = Month(c.Value) & "月" _
& Day(c.Value) & "日(" _
& WeekdayName(Weekday(c.Value), True) & ")" _
& Hour(c.Value) & "時に行きます。"
i = i + 1
Next

Set Sh1 = Nothing
Set Sh2 = Nothing

End Sub

投稿日時 - 2018-07-03 10:43:28

お礼

ご回答ありがとうございます。
質問がわかりにくくすいません。。

VBA自体に、今ある文字列を組み合わせて、一つの文章を作っていく。という解釈で間違ってないでしょうか?(汗)(VBAを最近学び始めたばかりで、解釈が間違っていたらすいません。)

この式でリストと組み合わせたらいけるかもしれません!
ありがとうございました!

投稿日時 - 2018-07-03 13:15:50

ANo.1

具体例を提示したほうがよろしいかと思います。

投稿日時 - 2018-07-03 10:30:08

お礼

ご回答ありがとうございます。
実例をさらしたいのですが、諸事情によりそれができないのです。
申し訳ありません。

投稿日時 - 2018-07-03 13:01:43

あなたにオススメの質問