top of page

【VBA】別シートの数値を演算し、文章を出力

  • uniteen
  • 2015年7月20日
  • 読了時間: 2分

こんにちわ。

三連休です。

マジで暑い。

【文章の作成マクロ】

といっても、別にたいそうなことでもないです。

マクロ側に文章を登録し、別のシートの数値を文章の中に組み込み、

文章を再構成するということです。

今回は、

「今日の天気は、【曇り】です。」

の【】内を日によって変えたいと思います。

①文章について

書き方は、素の文章(関数や変数が入っていない、純粋な文章を

" "つきで書く

ex) "今日の天気は、 " "です。"

②変えたい文章

変数にして、マクロが計算できるようにします。その後、&を挟んで①とがっちゃんこします。

Dim Weather

"今日の天気は " & Weather & "です。"

③別のシートの情報を読み取らせる

別のシートには、天気の情報が載っているとします。

と、ここでお遊びですが前回の記事の復習がてら自動で天気を

日ごとにランダム生成するマクロを作りましょう。

1~31ごとにランダムに【晴れ】【曇り】【雨】を代入します。

Sub AddWeatherData()

Dim i

Dim rdm

For i = 1 To Cells(Rows.Count, 16).End(xlUp).Row

rdm = Int(Rnd * 3)

If rdm = 0 Then

Range("Q" & i) = "晴れ"

ElseIf rdm = 1 Then

Range("Q" & i) = "雨"

ElseIf rdm = 2 Then

Range("Q" & i) = "曇り"

End If

Next i

End Sub

と、サンプルの表ができたので、さっそく別シートからデータをひっぱりましょう。

Sub WeatherReport()

Dim Weather

Dim today As Long

Set sheet = ThisWorkbook.Worksheets("data")

today = Format(Now, "d")

For i = 1 To sheet.Cells(Rows.Count, 16).End(xlUp).Row

If sheet.Cells(i, 16) = today Then

Weather = sheet.Cells(i, 17)

Exit For

End If

Next i

Cells(29, 8) = "今日の天気は 、" & Weather & "です。"

End Sub

横のdataタブから、今日の日付と同じ番号を引っ張り、

対応する天気をWheatherに代入しています。

注意ですが、

If sheet.Cells(i, 16) = Format(Now, "d")

としても、エラーになります。数字はあっていても書式が違うと判定されてしまうよう

ですので、最初に別の変数でLong宣言をしておきましょう。

こんな感じで、日本語に変数を加えて適宜文章を出力できます。

csvの読み込みができるようになると、たぶんもっと楽になりますね。

では。


 
 
 

Comments


  • Facebook Black Round
  • Google+ Black Round
  • Twitter Black Round
bottom of page