• ベストアンサー

VBAで関数を使うには?

こんな感じだったとします。   A1      B1 2002/9/2 2002/9/3 2002/9/4 2002/9/5   : このB1にそれぞれの曜日を表示させるVBAを以下のようにしました。 Sub youbi() Dim i As Integer For i = 3 To 10 Cells(i, 3).Value = Weekday(Cells(i, 2), "aaa") Next End Sub もちろんエラーでした。 (メッセージは「型が一致しません」です。) そこで以下のように変更しました。 Sub youbi() Dim i As Integer For i = 3 To 10 Cells(i, 3).Value = "=text(Weekday(b3), ""aaa"")" Next End Sub するときちんと曜日が表示されたのですが、もちろん全部B3のセルの日付の曜日です。 ここを変数にするにはどうしたらいいのでしょうか? とっても簡単なことのように思えますが、意外とハマってしまって抜け出せません。 よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

A1からC1まで、(A1)2002/9/2(B1) 2(C1) 月 (B1、C1は結果) でしかテストをしていませんが、VBAらしい関数の使い方は下記の通りと思います。長ったらしく、いやですが。 VBAでは関数のネストは考えてないと思います。 2ステップに分ければ良いですから。 Sub test01() Cells(1, 2) = Application.WorksheetFunction.Weekday(Range("a1")) Cells(1, 3) = Application.WorksheetFunction.Text(Cells(1, 2), "aaa") End Sub

KODAMAR
質問者

お礼

できました! ネストの考えはないんですね。 わかりました、以後気をつけます。 ありがとうございました。

その他の回答 (3)

回答No.4

元のコード Cells(i, 3).Value = "=text(Weekday(b3), ""aaa"")" を Cells(i, 3).Value = "=text(Weekday(" & i & "3), ""aaa"")" とする方法もありますね。 ご参考までm(__)m

KODAMAR
質問者

お礼

なるほど! こういう考えもあるんですね。 人にきくといろいろなアイディアが出てきておもしろいですよね。 ありがとうございました。

  • tamazo-
  • ベストアンサー率60% (35/58)
回答No.3

VBAのヘルプ(EXCELのヘルプではなくVBAエディタから表示させるヘルプ)で、 「Visual Basicでワークシート関数を使用する」という トピックがあります。 そちらを見られてはどうでしょうか。

KODAMAR
質問者

お礼

回答ありがとうございます。 そうですね、まずはヘルプ見て勉強しないといけないですね。 ワークシート関数ではヘルプを検索してなかったと思います。 (曜日を表示とかそんな感じで検索してました。) ありがとうございました。

  • c-cassis
  • ベストアンサー率28% (11/39)
回答No.1

こんにちわ。 ちょっとやり方が違うので恐縮ですが・・・ Sub youbi() Dim i As Integer For i = 1 To 5 Cells(i, 2).Value = Format$(Cells(i, 1), "aaa") Next End Sub だと、よい感じに入っていきますよ。 ひとまず、試してみてくださいませ。

KODAMAR
質問者

お礼

はい、ちゃんとできました! VBAではWEEKDAY関数とか使えないんですかね? まだ勉強はじめたばかりで関数とかあんまり使ったことなかったんですが、 きっとこれからそういうニーズも出てくるかなぁーなんて思うのですが。 とりあえず、今回はこれでうまくいきました。 ありがとうございました☆

関連するQ&A