- ベストアンサー
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のセルの日付の曜日です。 ここを変数にするにはどうしたらいいのでしょうか? とっても簡単なことのように思えますが、意外とハマってしまって抜け出せません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (3)
- ShadowMoon
- ベストアンサー率59% (73/122)
元のコード Cells(i, 3).Value = "=text(Weekday(b3), ""aaa"")" を Cells(i, 3).Value = "=text(Weekday(" & i & "3), ""aaa"")" とする方法もありますね。 ご参考までm(__)m
お礼
なるほど! こういう考えもあるんですね。 人にきくといろいろなアイディアが出てきておもしろいですよね。 ありがとうございました。
- tamazo-
- ベストアンサー率60% (35/58)
VBAのヘルプ(EXCELのヘルプではなくVBAエディタから表示させるヘルプ)で、 「Visual Basicでワークシート関数を使用する」という トピックがあります。 そちらを見られてはどうでしょうか。
お礼
回答ありがとうございます。 そうですね、まずはヘルプ見て勉強しないといけないですね。 ワークシート関数ではヘルプを検索してなかったと思います。 (曜日を表示とかそんな感じで検索してました。) ありがとうございました。
- c-cassis
- ベストアンサー率28% (11/39)
こんにちわ。 ちょっとやり方が違うので恐縮ですが・・・ Sub youbi() Dim i As Integer For i = 1 To 5 Cells(i, 2).Value = Format$(Cells(i, 1), "aaa") Next End Sub だと、よい感じに入っていきますよ。 ひとまず、試してみてくださいませ。
お礼
はい、ちゃんとできました! VBAではWEEKDAY関数とか使えないんですかね? まだ勉強はじめたばかりで関数とかあんまり使ったことなかったんですが、 きっとこれからそういうニーズも出てくるかなぁーなんて思うのですが。 とりあえず、今回はこれでうまくいきました。 ありがとうございました☆
お礼
できました! ネストの考えはないんですね。 わかりました、以後気をつけます。 ありがとうございました。