[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『年度のVBA記述は?』(万年太郎)
3月締め4月始まりの年度内の数え月数を変数として利用するVBAを考えており、 [[20080715123945]] を参考にして下記のサンプルプログラムを作ったのですが、 「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と エラーメッセージが出てしまいます。どこに問題があるのでしょうか? A 1 2007/8 2 2007/9 3 2007/10 4 2007/11 5 2007/12 6 2008/1 7 2008/2 8 2008/3 9 2008/4 10 2008/5 11 2008/6 12 2008/7 13 2008/8 14 2008/9 15 2008/10 16 2008/11 17 2008/12 18 2009/1 19 2009/2 20 2009/3
Sub 月数表示テスト() Dim i, y, LrA As Integer
LrA = Range("A65536").End(xlUp).Row
For i = 1 To LrA y = Application.Date(Year(Range("A" & i)), Month(Range("A" & i)) - 3, 1) Cells(i, 3).Value = y Next i End Sub
WInXp,EXcel2003
>どこに問題があるのでしょうか
1.引用されたトピックとは、A列のデータ型が異なります。あちらはシリアル値です。 2.Date関数は、VBAとワークシート関数とでは意味が違います。
3.あちらの解決は最終的にシリアル値にして、「書式で年を表示」するものです。 こちらの方もそれでいいのですか?
(半平太)
つまり、データ型を統一する必要があるわけですね?y=整数(1〜12)を求める為にはVBAでは どういう記述をすればいいか、試行錯誤しているのですが、うまくいきません。 例えば y = Format(Year(Range("A" & i)), Month(Range("A" & i)) - 2, 1) とやってみましたが、 A C 1 2008/3 2008 2 2008/4 1 3 2008/5 2 4 2008/6 3 5 2008/7 4 6 2008/8 5 7 2008/9 6 8 2008/10 7 9 2008/11 8 10 2008/12 9 11 2009/1 -2 12 2009/2 -1 13 2009/3 2009 14 2009/4 1 15 2009/5 2 16 2009/6 3 17 2009/7 4 18 2009/8 5 19 2009/9 6 20 2009/10 7 21 2009/11 8 22 2009/12 9 23 2010/1 -2 24 2010/2 -1 25 2010/3 2010
と想定外の数値が出てしまうのです。(-1,-2,2008,2009,2010) (万年太郎)
A列に/1を付け足して、2008/3/1という日付に直してしまえば良いのではないですか。 ところでA列にはどのようにして入力していますか。
(川野鮎太郎)
今、/1とやってみたのですが、結果は先程と同じです。 @A列は2008/10/1 と入力する AA列を全部選択する Bマウスを右クリック→セルの書式設定→表示形式→ユーザー定義→種類(T)yyyy/mm/dd で 設定していますが、間違っていますか?
(><)(万年太郎)
>A列は2008/10/1 と入力する あれっ! すみません、それじゃ、同じシリアル値ですね (^^ゞ
なら、これで ↓ Sub 月数表示テスト() Dim i, y, LrA As Integer
LrA = Range("A65536").End(xlUp).Row
For i = 1 To LrA y = Year(DateAdd("M", -3, Range("A" & i).Value)) Cells(i, 3).Value = y Next i
End Sub
(半平太)
衝突しました。
ってことは、元々シリアル値になっているってことですね。(^_^A; では、 If Month(Range("A" & i)) < 4 Then y = Month(Range("A" & i)) + 12 - 3 Else y = Month(Range("A" & i)) - 2 End If
でいけますか。
(川野鮎太郎)
川野さんの事例を修正して If Month(Range("A" & i)) < 4 Then y = Month(Range("A" & i)) + 12 - 3 Else y = Month(Range("A" & i)) - 3 End If
とやったら、こちらの期待通りの結果が出ました。川野さんの事例だったら 年度に左右されずにすみますね。今回で得られたy、という変数を手かがりに 来週、計算するルーチン作成にチャレンジしてみます。 半平太さん、川野さんありがとうございます。m(_ _)m m(_ _)m (万年太郎)
あれー、月数だったのですね。すっかり引用されたトピックと同じだと思っていました。 今さらですが、、
y = Year(DateAdd("M", -3, Range("A" & i).Value)) ↑ Month へ変更
(半平太)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.