Excel VBA質問箱 IV

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

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


6609 / 13644 ツリー ←次へ | 前へ→

【44220】日付関数を作りたいのですが ねもと 06/11/10(金) 10:42 質問[未読]
【44221】Re:日付関数を作りたいのですが neptune 06/11/10(金) 11:28 回答[未読]
【44222】Re:日付関数を作りたいのですが awu 06/11/10(金) 11:29 回答[未読]
【44223】Re:日付関数を作りたいのですが Jaka 06/11/10(金) 11:39 発言[未読]
【44224】Re:日付関数を作りたいのですが awu 06/11/10(金) 11:55 発言[未読]
【44225】Re:日付関数を作りたいのですが Jaka 06/11/10(金) 11:58 発言[未読]
【44228】Re:日付関数を作りたいのですが awu 06/11/10(金) 12:54 発言[未読]
【44229】Re:日付関数を作りたいのですが ねもと 06/11/10(金) 12:58 質問[未読]
【44231】Re:日付関数を作りたいのですが awu 06/11/10(金) 14:02 発言[未読]
【44232】Re:日付関数を作りたいのですが ねもと 06/11/10(金) 14:10 質問[未読]
【44233】Re:日付関数を作りたいのですが りん 06/11/10(金) 14:54 発言[未読]
【44234】Re:日付関数を作りたいのですが ねもと 06/11/10(金) 15:03 質問[未読]
【44236】Re:日付関数を作りたいのですが りん 06/11/10(金) 15:26 発言[未読]
【44238】Re:日付関数を作りたいのですが ねもと 06/11/10(金) 15:45 お礼[未読]
【44239】Re:日付関数を作りたいのですが ねもと 06/11/10(金) 15:46 お礼[未読]

【44220】日付関数を作りたいのですが
質問  ねもと  - 06/11/10(金) 10:42 -

引用なし
パスワード
   DateAddの関数をシート上で使用したいのですがどうすればいいでしょうか、教えてください。
Excel VBAは今まで使用したことがありません。
よろしくお願いします。

【44221】Re:日付関数を作りたいのですが
回答  neptune  - 06/11/10(金) 11:28 -

引用なし
パスワード
   ▼ねもと さん:
こんにちは
>DateAddの関数をシート上で使用したいのですがどうすればいいでしょうか、教えてください。
目的がわからないのでなんともいえませんが、一般関数の組み合わせで
DateAddの処理は出来ると思いますので、VBAではなく一般関数の板で
相談してみてはどうでしょう?

>Excel VBAは今まで使用したことがありません。
どうしてもというなら、先ずは
h tp://www6.plala.or.jp/MilkHouse/
のような所で基本だけでも学んで下さい。

ちなみにどうすればよいかですが、
public function 関数名(引数 as データ型)as 戻すデータ型
 DateAddを使った処理(どのようなものかは不明)
 関数名=処理の結果
end function
のような書式になります。

【44222】Re:日付関数を作りたいのですが
回答  awu  - 06/11/10(金) 11:29 -

引用なし
パスワード
   VBAのDateAdd関数と全く同じ機能で、ワークシート上で使いたい
ということでことであれば、ユーザ定義関数を作成しては如何でしょう。

例えば、DateAdd2 関数を作るとすれば、次の手順で操作してみてください。

初めてのようですので、詳しく書きます。

1.Alt + F11 または、[ツール] メニューの [マクロ] をポイントし
  [Visual Basic Editor] をクリックします。

2.Visual Basic Editor ウィンドウがアクティブになったら、
 [挿入] メニューの [標準モジュール] をクリックします。

3.モジュールウィンドウに下記コードをコピーして貼り付けます。

4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。

5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
 「中」にして[OK]します。

6. これで、DateAdd2 関数が使えます。 使い方は、DateAddと同じです。

書式 : DateAdd2( 間隔タイプ , 数値 , 日付 ) です。 

間隔タイプには、"yyyy","m","d","h","n" のいずれかを指定します。

例えば、任意のシートのセルA1に =TODAY() と入力します。
セルB1に、=DateAdd2("m",1,A1) を入力すると1ヶ月後の日付を表示します。

こなん感じで如何でしょうか。

Function DateAdd2(Target As String, V As Integer, D As String) As Date
  DateAdd2 = DateAdd(Target, V, DateValue(D))
End Function

【44223】Re:日付関数を作りたいのですが
発言  Jaka  - 06/11/10(金) 11:39 -

引用なし
パスワード
   こうじゃないの?
Function DateAdd2(Target As String, V As Integer, D As Date) As Date
  DateAdd2 = DateAdd(Target, V, DateValue(D))
End Function

【44224】Re:日付関数を作りたいのですが
発言  awu  - 06/11/10(金) 11:55 -

引用なし
パスワード
   最初は、そのようにしたのですが、
DateValue関数の書式は、DateValue(文字式) となっているので、そうしたのです。

何か、不都合があって直したような、無いような・・・ 忘れました。

動かなかったですか?


しかし、ここのサイトエラーの続発で、見るのも書くのも至難の業でぇ〜す。
  

【44225】Re:日付関数を作りたいのですが
発言  Jaka  - 06/11/10(金) 11:58 -

引用なし
パスワード
   こういう風に使えないだろうなと思って。
=DateAdd2("m",5,TODAY())

【44228】Re:日付関数を作りたいのですが
発言  awu  - 06/11/10(金) 12:54 -

引用なし
パスワード
   VBA本来の DateAdd 関数と同じ機能ということですので、そのとおりですね。 
DateAdd の3番目の引数は、日付でしたね。

なんか、DateValueの仕様と ごっちゃになったようですね。

=DateAdd2("m",1,"平成" & "18年" & "10月" & "10日")
とか、出来ると思ったりして・・・ 仕様改変でした。 失礼しました。

【44229】Re:日付関数を作りたいのですが
質問  ねもと  - 06/11/10(金) 12:58 -

引用なし
パスワード
   awu さん
ありがとうございます。
早速下記のとおり作成してみたんですけど
コンパイルエラー
ユーザ定義型は定義されていませんになってしまいます。
何か設定がおかしいのでしょうか?
詳しく書いていただいて本当の心からお礼申し上げます。
よろしくお願いします。


>VBAのDateAdd関数と全く同じ機能で、ワークシート上で使いたい
>ということでことであれば、ユーザ定義関数を作成しては如何でしょう。
>
>例えば、DateAdd2 関数を作るとすれば、次の手順で操作してみてください。
>
>初めてのようですので、詳しく書きます。
>
>1.Alt + F11 または、[ツール] メニューの [マクロ] をポイントし
>  [Visual Basic Editor] をクリックします。
>
>2.Visual Basic Editor ウィンドウがアクティブになったら、
> [挿入] メニューの [標準モジュール] をクリックします。
>
>3.モジュールウィンドウに下記コードをコピーして貼り付けます。
>
>4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
>
>5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
> 「中」にして[OK]します。
>
>6. これで、DateAdd2 関数が使えます。 使い方は、DateAddと同じです。
>
>書式 : DateAdd2( 間隔タイプ , 数値 , 日付 ) です。 
>
>間隔タイプには、"yyyy","m","d","h","n" のいずれかを指定します。
>
>例えば、任意のシートのセルA1に =TODAY() と入力します。
>セルB1に、=DateAdd2("m",1,A1) を入力すると1ヶ月後の日付を表示します。
>
>こなん感じで如何でしょうか。
>
>Function DateAdd2(Target As String, V As Integer, D As String) As Date
>  DateAdd2 = DateAdd(Target, V, DateValue(D))
>End Function

【44231】Re:日付関数を作りたいのですが
発言  awu  - 06/11/10(金) 14:02 -

引用なし
パスワード
   標準モジュールに、コード全体を <<そのまま>>貼り付けましたか?

貼り付けたコードの一部が、赤くなったらダメなんですよ。

コピー & 貼り付けの仕方は、下記コード(Jakaさんの方にしてください。)の
Function から End Function までをマウスでドラッグし、コード全体を反転させます。

Ctrlキーを押しながら、C キーを押します。

標準モジュールのコードウィンドウ(広い余白の所)の左上隅にカーソルを置いて、
Ctrlキーを押しながら、V キーを押します。  これでコードが張り付きます。
(もし、Option Explicit というのがあったら、その下に貼り付けます。)

これで、如何でしょうか。


Function DateAdd2(Target As String, V As Integer, D As Date) As Date
  DateAdd2 = DateAdd(Target, V, DateValue(D))
End Function


もし、動作を確認しましたら、書籍等を参考にしてVBAを習得し、このコードを
理解できるようにした方が、宜しいかと思います。

【44232】Re:日付関数を作りたいのですが
質問  ねもと  - 06/11/10(金) 14:10 -

引用なし
パスワード
   ▼awu さん:
ありがとうございます。
コードは、赤くはなっていません。
コンパイルをするとコンパイルエラーになります。
Excel2002を使用しています。


>標準モジュールに、コード全体を <<そのまま>>貼り付けましたか?
>
>貼り付けたコードの一部が、赤くなったらダメなんですよ。
>
>コピー & 貼り付けの仕方は、下記コード(Jakaさんの方にしてください。)の
>Function から End Function までをマウスでドラッグし、コード全体を反転させます。
>
>Ctrlキーを押しながら、C キーを押します。
>
>標準モジュールのコードウィンドウ(広い余白の所)の左上隅にカーソルを置いて、
>Ctrlキーを押しながら、V キーを押します。  これでコードが張り付きます。
>(もし、Option Explicit というのがあったら、その下に貼り付けます。)
>
>これで、如何でしょうか。
>
>
>Function DateAdd2(Target As String, V As Integer, D As Date) As Date
>  DateAdd2 = DateAdd(Target, V, DateValue(D))
>End Function
>
>
>もし、動作を確認しましたら、書籍等を参考にしてVBAを習得し、このコードを
>理解できるようにした方が、宜しいかと思います。

【44233】Re:日付関数を作りたいのですが
発言  りん  - 06/11/10(金) 14:54 -

引用なし
パスワード
   ねもと さん、こんにちわ。

もしかして、参照設定でカレンダーコントロールが参照(使用)不可になっていませんか?
確認方法は、VBEの「ツール」の「参照設定」です。

なっていたらチェックをはずしてください。
違ってたらごめんなさい。

【44234】Re:日付関数を作りたいのですが
質問  ねもと  - 06/11/10(金) 15:03 -

引用なし
パスワード
   りん さん
ありがとうございます。
参照設定でチェックがついていつのは
Visuai Basic For Applications
Micrsort Excel 10.0 Object Library
OLE Automation
Micrsort OFFICE 10.0 Object Library
だけチェックかついています。
あとどこにチェックをすればいいのか教えてください。
よろしくお願いします。


>ねもと さん、こんにちわ。
>
>もしかして、参照設定でカレンダーコントロールが参照(使用)不可になっていませんか?
>確認方法は、VBEの「ツール」の「」です。
>
>なっていたらチェックをはずしてください。
>違ってたらごめんなさい。

【44236】Re:日付関数を作りたいのですが
発言  りん  - 06/11/10(金) 15:26 -

引用なし
パスワード
   ねもと さん、こんにちわ。

>参照設定でチェックがついていつのは
>Visuai Basic For Applications
>Micrsort Excel 10.0 Object Library
>OLE Automation
>Micrsort OFFICE 10.0 Object Library
>だけチェックかついています。
それでOKです。
参照不可がついてないなら問題はないはずなんですけどね。

DateAddに引数の型を合わせたらこんな感じ。

標準モジュールに
Function DateAdd2(a As String, V As Integer, D As Variant) As Variant
  DateAdd2 = DateAdd(a, V, D)
End Function

セルに入れる数式例
=DateAdd2("m", -1, "31-Jan-95")

コピーせずに手で打ちましたか?
つづりは間違えていませんでしたか?

【44238】Re:日付関数を作りたいのですが
お礼  ねもと  - 06/11/10(金) 15:45 -

引用なし
パスワード
   ▼りん さん:
いろいろありがとうございました。
できました。
ありがとうございまた


>ねもと さん、こんにちわ。
>
>>参照設定でチェックがついていつのは
>>Visuai Basic For Applications
>>Micrsort Excel 10.0 Object Library
>>OLE Automation
>>Micrsort OFFICE 10.0 Object Library
>>だけチェックかついています。
>それでOKです。
>参照不可がついてないなら問題はないはずなんですけどね。
>
>DateAddに引数の型を合わせたらこんな感じ。
>
>標準モジュールに
>Function DateAdd2(a As String, V As Integer, D As Variant) As Variant
>  DateAdd2 = DateAdd(a, V, D)
>End Function
>
>セルに入れる数式例
>=DateAdd2("m", -1, "31-Jan-95")
>
>コピーせずに手で打ちましたか?
>つづりは間違えていませんでしたか?

【44239】Re:日付関数を作りたいのですが
お礼  ねもと  - 06/11/10(金) 15:46 -

引用なし
パスワード
   ▼awu さん
いろいろありがとうございました。
やっとできました。
ありがとうございました。



>標準モジュールに、コード全体を <<そのまま>>貼り付けましたか?
>
>貼り付けたコードの一部が、赤くなったらダメなんですよ。
>
>コピー & 貼り付けの仕方は、下記コード(Jakaさんの方にしてください。)の
>Function から End Function までをマウスでドラッグし、コード全体を反転させます。
>
>Ctrlキーを押しながら、C キーを押します。
>
>標準モジュールのコードウィンドウ(広い余白の所)の左上隅にカーソルを置いて、
>Ctrlキーを押しながら、V キーを押します。  これでコードが張り付きます。
>(もし、Option Explicit というのがあったら、その下に貼り付けます。)
>
>これで、如何でしょうか。
>
>
>Function DateAdd2(Target As String, V As Integer, D As Date) As Date
>  DateAdd2 = DateAdd(Target, V, DateValue(D))
>End Function
>
>
>もし、動作を確認しましたら、書籍等を参考にしてVBAを習得し、このコードを
>理解できるようにした方が、宜しいかと思います。

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