• 締切済み

VBAを使って日付を比べる

VBAで簡単な基準日を指定してそれに合わせた成績表をランキングにしたいと考えて作っていたのですが 基準日と参考日を見比べる時に参考日が上手く機能せず 最初の参考日から動かないままループしてしまいます。解決方法があれば教えて下さい。 ちなみに参考日、基準日はdata型の変数を宣言しています。

みんなの回答

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

質問文での問題の内容の説明が、何もなく、読者にとって、何も具体的なことがわからない。 こういう、相手(読者)のことを、思いやれない、想像力の不足こそ、質問者の最大の問題だと思う。 模擬実例をあげて、説明すべきと思う。ここで手抜きするなら、回答者のことを 想像すること。小生は、回答には、模擬実例をほとんど挙げているが、その例を作る手間の何とかかることか。 -- プログラムがうまく走らない問題は、プログラムコードそのもの+データ内容を 考えないと、いけないはず。 補足要求しても、よく会社のことで、現状を出したくない、とかいう言い訳が多いが、それならここに質問するのは、お門違いと思う。

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21359)
回答No.3

日付シリアルのデータは、年月日時刻が、表示されていなくても 何らかの形で補填されて必ず設定されています。 ですので、日付のチェックは「変数を必ず明示的に年月日に置き 換えて確認」しないと、思っているのと結果が違ってくる可能性 がありますよ。 具体的には変数を(=MONTH(A1)*100+DAY(A1))のような整数に ワークシート上なりVBA内なりで変換すると、うまく行くのでは ないかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1639/2487)
回答No.2

> 最初の参考日から動かないままループ どのように参考日を加算もしくは減算しているのでしょう 加減算している次の行でブレークポイント設定してローカルウィンドウで変数の値を見てみるか次の行に Debug.Print 変数 このあとにブレークポイント設定 でイミディエイトウィンドウに値を表示してみましょう。 値が変化していなければ(またはある一定から加減されなくなる)加減算のしかたが間違っている可能性が大です。

全文を見る
すると、全ての回答が全文表示されます。
  • hiodraiu
  • ベストアンサー率15% (450/2832)
回答No.1

> ちなみに参考日、基準日はdata型の変数を宣言しています。 Date型にしてみたら如何でしょう。 コードが書かれているわけでもなく、処理フローが書かれているわけでもない状況で、どういった回答を期待していますか? 一般的には、デバッグ機能を使い、各所で変数の値を確認したり、処理の流れを確認すれば、問題箇所が見えてくると思います。また、それ以前の話として、処理フローを何かしらのチャート(フローチャートは、お薦めしない)で、自分の思う処理の正しさを検証してみてはいかがですか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ExcelのVBAでの変数の範囲指定について

    Excel2010を使っている者です。 VBAでの変数の範囲指定についてわからない点があるのでお願いいたします。 私の使っている参考書に「プロジェクト内のどこでも有効な変数は、プロシージャの中ではなく、モジュールの一番上で、Publicと付けて宣言するように」と書いてあったのですが、プロジェクト内とはどういう意味でしょうか? よろしくお願いいたします。

  • VBAの変数宣言について

    VBAの変数宣言について サイトを調べながら仕事で色々と自動化しています。VBAを学び始めてまだ日が浅いので疑問は尽きないのですが、一番気になるところを一つ。 変数宣言の As ~ ってのがどうも苦手です。 とりあえず変数として使いたいけど、As ~ の ~ でなにを入れたらいいか分からず、入れないまま使っています。やはり、良くないのでしょうか? 上手に覚えるコツはありますか?

  • VBAでの0のデータ型は

    VBAの初心者です。ExcelのVBAで小数点2桁の変数Xのデータ型を宣言したいのですが、このXは”0”の時もあります。 このような時はこの変数の型はどのように宣言したら良いのでしょうか、定義では、”Single”には正の範囲と負の範囲があって”0”がないようなのですが?

  • Excel VBA 未使用の変数定数宣言の削除

    Excel2010のVBAで使われていない変数、定数の宣言を削除したいのですが、今は1つずつ検索機能で検索して宣言だけが検索されたものを削除しています。何か簡単に未使用の変数、定数を見つける方法はありますでしょうか。

  • VBAでセルアドレスに変数を使いたい

    VBAでセルアドレスを変数を使って指定したいのですが、どの参考書にも載っていない。RangeやCellsでは特定の番地や相対番地しか指定できないですが。何か方法ありますか。

  • VBAでstatic変数を宣言するとトラブル

    フォームにクエリーを基にしたリストボックスがあり、クエリーの抽出条件には同じフォームのテキストボックスを指定しています。テキストボックスには規定値プロパティーで"*"を設定しています。 それで問題なく開くことが出来ていたのですが、必要があってフォームモジュールでStatic変数を宣言したところ、クエリーが機能せず、指定したテキストボックスのパラメーター入力ダイアログが表示されます。static変数の宣言を削除するとちゃんと動きます。public変数やモジュール変数を宣言してもおなじ現象が起きます。 原因はなんでしょうか。またどうすればstatic変数などを使うことが出来るのでしょうか? よろしくお願いします。

  • エクセルVBA フォームの日付を指定

    データ登録フォームの日付を指定したいのですがどうすればよいでしょうか? まず、userform5を開きます。規定値は当日にしていますが、過去のものも入れられるようクリアして任意の日付を入力します。 その後、実行ボタンを押すとuserform2を開き、入力開始するのですが、その時の撮影日textboxの値にさきほど入力した値を入れたいです。 変数はPrivate torokudate As Dateこのような形でよいと思いましたが、どこに書けば他のフォームでも利用できるのでしょうか? うまくいってるのかどうかわかりませんが、表示が0:00とされました。 撮影日textboxのプロパティ設定がわるいのかどうかもよくわかりません。 初歩的なVBAですが、よろしくお願いします。

  • VBAデータ型一覧表の「記憶領域のサイズ」とは

    エクセルVBAの変数宣言時に使うデータ型一覧内に「記憶領域のサイズ」というのがありますがどういう意味でしょうか。 例   種類    表記  記憶領域のサイズ  データ範囲    バイト型  Byte  1バイト      0~255 宣言と同時に、変数(箱)を確保する最大必要メモリーを意味するということなら、変数にデータ範囲の限度255を入れたとすると3文字なので1バイトでは足りないのでは? 初心者ですよろしくお願いします。

  • VBA-DLLの引数受け渡しについて

    皆様こんにちは VCでDLLを作成し、VBAからString配列を表データでわたし、DLLにて抽出後 VBAに戻す処理を作成しています。 VCよりデバッグ実行すると発生しないのですが VBAから実行するとたまにですが落ちてしまいます。 又、偶然かもしれませんがDLLをリリースモードにしたときしか落ちません。 以下の様なコードを作成し実行しているのですが、 問題があれば御指摘いただければありがたいです。 VCはVer6です。 void WINAPI foo (LPSAFEARRAY FAR* inData, //VBAよりわたされるString配列 LPSAFEARRAY FAR* outData) //VBAへ返すString配列 { BSTR inElment; BSTR outElment; long inIdx[2]; long outIdx[2]; char data[256]; for(行数分ループ) { for(列数分ループ) { //データ獲得処理   //inIdx[0],inIdx[1]にはinData配列へのインデックスが入ります。 SafeArrayGetElement(inData, inIdx, &inElement); lstrcpy(data,(LPCTSTR)inElement); SysFreeString (inElement);   ; //データを返す処理   //outIdx[0],outIdx[1]にはoutData配列へのインデックスが入ります。 element2 = SysAllocString((BSTR)data); SafeArrayPutElement(*outData, outIdx, outElement); SysFreeString (outElement); } } } 尚VBA側は 宣言を Public declare ・・・・ foo(ByRef indata() as string, ByRef outData() as string) としています。 各引数はRedimにて確保しています。 LPSAFEARRAY型変数や それに関係する関数 SysAllocStaring,SafeArrayGetElement,SafeArrayPutElement,SysFreeString の使い方に間違いがあるのでしょうか? よろしくお願い致します。

  • エクセル2003で作ったVBAが2007で動かない

    現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。 どなたか、解決方法をご教授頂けないでしょうか? ・VBAを含んだファイルを開いて、マクロを有効にすると ”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。 ・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか? どうぞ、よろしくお願い致します。

MFC-J6983CDW FAX送信エラー
このQ&Aのポイント
  • MFC-J6983CDWのFAX送信でエラーが発生し、1枚しか送信できない問題が発生しています。
  • Windows10で無線LAN接続している環境で問題が発生しています。
  • アナログ回線を使用しています。
回答を見る

専門家に質問してみよう