サブルーチンの引数をループさせます

 開発備忘録のコーナーです。こばとが覚書を残していくための場所だから、間違って入ってきちゃった人はどこかもっと面白い記事へ行ってね。たとえばこういうコーナーがおすすめだよ。

 ⇒ Excel VBA いつどこゲームの研究所

サブルーチンの引数をループさせる

 英語例文自動作成のためのマクロなんだけど、とりあえず構造を考え直したいから、日本語文章だけのコードに単純化してみたよ。 out シートに予め並んでいる「ひな型」の単語を入れ替えていくんだけど、そのループを サブルーチンの外に出してすっきりさせる ことにした。

 Sub test実行()
  For j = 1 To 5
   test j
  Next j
 End Sub
 Sub test(j)

 Dim rd As Long, ct As Long
 Dim k As Integer
 Dim myrg As Range
 Dim nm As String, w1 As String

 Randomize

 For k = 1 To 2

 'リストの行数を数えます
 ct = Worksheets("sample").ListObjects(k).ListRows.Count
 nm = Worksheets("sample").ListObjects(k).Name

 rd = FRANDBETWEEN(1, ct)

 Set myrg = Worksheets("sample").ListObjects(k).DataBodyRange
 w1 = myrg.Cells(rd, 1)

 'セルA1に含まれている特定単語を[w1]に変えます
 '結果は out シートに出力します
 Worksheets("out").Cells(j, 1).Replace what:=nm, replacement:=w1

 Next k

 End Sub

 test マクロは j 行 1 列の部分の特定単語を入れ替える。
 だから j はこのマクロの引数となってるね。その j を test 実行マクロで 1 から 5 まで動かして、out シートのセル A1 から A5 まで文章を変換するという仕組みになんだ。
 

鬼越淑光さんは八尾清水に住んでいます

 というわけで、こんな文章が出来あがった。

 鬼越淑光(おにこし よしみつ)と申します。八尾清水に住んでいます。

 初めまして。油屋怜治(あぶらや れいじ)です。八尾清水出身です。

 東野朝霞(あずまの あさか)さんは曽我原に住んでいます。

 覚幸朱(かくゆき あけみ)さんは現在八尾清水に住んでおられるそうです。
 東野朝霞(あずまの あさか)さんは土出に引越したそうです。

 ...... で、八尾清水ってどこなの?
 ...... 人気の場所なのかな? こばとも行ってみようかな。

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)