Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1950 / 13645 ツリー ←次へ | 前へ→

【70883】Formula 変数 かかこ 12/1/12(木) 15:02 質問[未読]
【70884】Re:Formula 変数 momo 12/1/12(木) 15:15 発言[未読]
【70885】Re:Formula 変数 かかこ 12/1/12(木) 15:28 お礼[未読]

【70883】Formula 変数
質問  かかこ  - 12/1/12(木) 15:02 -

引用なし
パスワード
   こんにちは
初歩的な質問だったらすみません
どうしてもうまくいかないので、よろしくお願いします

Sub VBAテスト()
Dim 数字 As Long
Dim Mydate As Long
Dim Mydate2 As Date
Dim Mydate3 As Date

Mydate = Month(Date)
MsgBox Mydate

Select Case Mydate
  Case 4
    数字 = 9
  Case 5
    数字 = 8
  Case 6
    数字 = 7
  Case Else
    数字 = 6
End Select
MsgBox 数字

Mydate2 = DateSerial(Year(Date), 数字, Day(Date))
MsgBox Mydate2

Mydate3 = Sheets("Sheet1").Range("D2").Value
MsgBox Mydate3

Sheets("Sheet1").Select
Range("B2").Select
Selection.Formula = "=DATEDIF(Mydate3,Mydate2,""M"")"
End Sub

上のコードを走らせると
=DATEDIF(Mydate3,Mydate2,"M")
まんまでて、#Nameエラーになります

おそらく変数の使い方が変なんだとは思いますが、
どこがおかしいのかご指摘いただけると助かります。
よろしくお願いします

【70884】Re:Formula 変数
発言  momo  - 12/1/12(木) 15:15 -

引用なし
パスワード
   ▼かかこ さん:
Formulaとして変数を扱うのなら、
文字列の部分と変数の部分をわけて繋げないとだめですね。

Sheets("Sheet1").Range("B2").Formula = _
  "=DATEDIF(""" & Mydate3 & """,""" & Mydate2 & """,""M"")"

でもVBAにもDateDiffがありますから、値として返して良いのなら
Sheets("Sheet1").Range("B2").Value = DateDiff("M", Mydate3, Mydate2)
の方がスマートですが。

【70885】Re:Formula 変数
お礼  かかこ  - 12/1/12(木) 15:28 -

引用なし
パスワード
   ▼momo さん:
ご回答ありがとうございます

>Formulaとして変数を扱うのなら、
>文字列の部分と変数の部分をわけて繋げないとだめですね。

そうだったのですか、知りませんでした。

>Sheets("Sheet1").Range("B2").Formula = _
>  "=DATEDIF(""" & Mydate3 & """,""" & Mydate2 & """,""M"")"

おかげさまでうまくいきました。

>でもVBAにもDateDiffがありますから、値として返して良いのなら
>Sheets("Sheet1").Range("B2").Value = DateDiff("M", Mydate3, Mydate2)
>の方がスマートですが。

ありがとうございます。そうですね。
でもセルに計算式を残したいので、Formulaにしました。
すばやいご回答ありがとうございます。
助かりました。また何かありましたら宜しくお願いします。

1950 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free