- 締切済み
VBで「体育の日を返す関数」
VBの標準モジュールを使って体育の日を返したいのですがまったくわかりません。 excelで「A1{2000}と書いてB2{=Taiiku(A1)}」こたえを出せる感じにしたいのですが。。 関数名を「Taiiku」引数を「Toshi(2000とか年の4桁整数)」2000年までは10/10で以降は10月第二月曜日という設定です。 とっても素人なので細かい解説が付いていると助かります。 文が稚拙で大変恐縮なのですがよろしくお願いします。
- mi-yu27
- お礼率100% (1/1)
- Visual Basic
- 回答数1
- ありがとう数3
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Masa2072
- ベストアンサー率51% (94/182)
まずはサンプル(とういかまんまですが) Function Taiiku(ByVal Y As Integer) As Date Dim FstYoubi As Integer '火曜日を先頭とした曜日を表す数字を格納 Dim SecMon As Integer '第二月曜日の日付を格納 If Y <= 2000 Then '##2000年以前はその年の10月10日を返す Taiiku = DateSerial(Y, 10, 10) Else '#2001年以降は10月の第2月曜日を返す '火曜日を1、月曜日を7とした曜日に対応する数字を取得 FstYoubi = Weekday(DateSerial(Y, 10, 1), vbTuesday) '第二月曜日の日付をもめる SecMon = 15 - FstYoubi Taiiku = DateSerial(Y, 10, SecMon) End If End Function ポイントとしては如何に第二月曜日を求めるかというかです。 ※もっと分かりやすい説明や考え方があるかもしれませんが、一例としてお考えください。 まず1日がとりうる曜日は当然7種類で、1日が日~土までのときの第二月曜日の日付は 日=9 月=8 火=14 水=13 木=12 金=11 土=10 となります、これを計算しやすいように並べ替えると 火(1)=14 水(2)=13 木(3)=12 金(4)=11 土(5)=10 日(6)=9 月(7)=8 ※( )の数字はFstYoubiの値 ( )内の数字と第二月曜日の日付の和が15になることが分かることから 第二月曜日は SecMon = 15- FstYoubi で求めることが出来ます。
関連するQ&A
- VB6でのフィールド定義
基本的な質問で申し訳ございません。 VB6を使用して画面作成しています。 1. 例えば100桁, CHAR型のフィールドをユーザーコントロールで定義する方法を教えてください。。 もしくは、標準モジュールなどで定義するのですか? 2. MAXの表示桁数はいくつですか?
- ベストアンサー
- Visual Basic
- VB初心者です
VB初心者なので教えて下さい。 a As String a = "平成17年" の時、中の数字の"17"の部分だけを抽出するには、 どのように記述すれば宜しいでしょうか? 中の数字は1桁でも2桁でも、とにかく数字だけを抽出したいのです。VBのVer6.0を使っています。
- ベストアンサー
- Visual Basic
- 色々なメソッドを宣言することについて・・・
/*引数で指定された範囲内のランダム整数値を取得し返す*/ /*キーボードから入力を受け付け、整数に変換後その値を返す*/ /*キーボードから入力された複数の文字列を配列に編集し返す*/ /*キーボードから入力された複数の整数を配列に編集し返す*/ /*引数で渡されたint型配列を指定された順(昇順または降順)にソートする*/ /*引数で渡されたint型配列中の最大値及び最小値を求め返す*/ /*引数で渡されたint型配列中の最大値及び最小値を求め画面に出力する*/ /* 引数で渡された8桁の年月日を、年、月、日に分割し返す 例 : 20050521が引数で渡されたら 2005 05 21 に分割しStringの配列を作成し返す */ /* 引数で渡された8桁の年月日を、年、月、日に分割し返す 例 : 20050521が引数で渡されたら 2005年05月21日 と出力する。 */ /* 引数で渡された10桁の年月日(YYYY/MM/DD)から'/'を削除し8桁で返す */ /* 引数で渡された10桁の年月日(YYYY/MM/DD)から'/'を削除し8桁で表示する */ /*引数で渡された3つのint型の平均を求めdouble型で返す*/ /*引数で渡された3つのint型の平均を求めdouble型で表示する*/ /*●●●●●●●●●●●●●●●●●●●●*/ /*●●●●●●●●●●●●●●●●●●●●*/ /*●●●●●●●●●●●●●●●●●●●●*/ /*●●●●●●●●●●●●●●●●●●●●*/ /*●●●●●●●●●●●●●●●●●●●●*/ } } /* このクラスを利用するクラスを作成する /*●●*/は自分でメソッドを考えて作成する */ というプログラムを作成したいのですがどのようにしたらいいかわかりません!!ところどころはわかるのですが…。
- 締切済み
- Java
- VB.NETからVBAマクロ(引数)を呼び出す方法
VB.NETから参照型引数付きのFunctionのVBAマクロを呼び出す方法 Excel2003のVBEの標準モジュールModule1にあるFunctionのマクロtest(引数)をVB.NETから呼び出して、引数に設定した値をVBA側で加工して、加工された値をVB.NETで取り出したいのですが、VB.NET側でどのように記述してよいのかがよく分かりません。 具体的には、以下のVBAをVB.NETから呼び出すにはどのように記述すればよいのでしょうか。できましたらそのままVB.NETのConsoleApplicationのModule1のSub Main()の中にコピーペーストして動くコードと参照設定を教えていただけると助かります。 ---Excel2003のVBA(C:\test\Book1.xls)---------- Function test(ByRef data As Long) As Long If data = 0 Then test = 0 data = 0 Else test = 1 data = 100 / data End If End Function ---------------------------------------------- よろしくお願いします(WindowsXP,VisualStudio2010,Excel2003VBE)
- 締切済み
- Visual Basic
- VB6で、C言語の(argv,argc)みたいな、コマンドライン引数を実現する方法は?
Microsoft-VisualBasic6でプログラミングしてます。 外部から(不特定の)ファイル名を指定して、 VBモジュールを起動して処理をしたいのですが、 C言語でいう、(argv,argc)みたいなものを使って(いわゆるコマンドライン引数)、 VBプログラミングする方法を教えて下さい。 <実行例> ・(モジュール名) (任意のファイル名) vbmodule.exe sample-a.cvs
- ベストアンサー
- Visual Basic
- 東京五輪1964から明日で半世紀~体育の日は月曜
明日でちょうど半世紀です。 東京五輪1964の思い出を教えてください。 当時生まれていない方は、 東京五輪1964の印象をどうぞ。 1980年代初頭に生まれた私も、 オリンピックは映像でしか知りません。 東京五輪がきっかけで「体育の日」(10月10日)が制定されました。 せっかく土日前の金曜日に当たっているのだから、 今年くらい翌週月曜日(10月13日)にしないで、 体育の日を本来の10月10日にして欲しいですよね。
- ベストアンサー
- アンケート
- VBA関数の使い方がわからないです
A1にはハイパーリンクとしてhttp://www.yahoo.co.jp/ が入っていて、標準モジュールで Sub Macro1() MsgBox HyperlinkAddress End Sub Function HyperlinkAddress(target As Range) As String HyperlinkAddress = target.Hyperlinks(1).Address End Function としたら、引数は省略できません。になるのですが、 どうすればいいですか? Sub Macro1() MsgBox Selection.Hyperlinks(1).Address End Sub これと同じような事を、関数を使って表現したいです。
- ベストアンサー
- その他MS Office製品
お礼
大変遅くなってしまいしたが、VBでのご説明とても助かりました。 丁寧で凄くわかりやすかったです。 本当にありがとうございました! それでは短い文で申し訳ないですが失礼いたします。