• ベストアンサー

accessのvbについて

(1)Dim stDocName As String  Dim stLinkCriteria As String 例えば上記のような文があると思うのですが、なぜいちいち文字型 にしないといけないのですか?今一わかりません。 (2)pribate sub form_open(cancel as integer)  というのも見かけるのですが、なにをどういう理由でcancelを  しなくてはいけないのですか?? 宜しくお願い致します

質問者が選んだベストアンサー

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

(1)#1、#2と少し説明点が違っていて、stDocNameはファイル名だと推定しますが、文字列で扱うことが、VBAシステム側がきめているからだと思います。 stLinkCriteriaも同じと思います。 (2)form_open(cancel as integer) は引数として (かっこ内は引数ですね)プログラム作成側または本件ではVBAシステム側でキャンセルキーが押されたかどうかを整数値で(一般には-1,0,1などが多い。またvbCancelなど組み込み定数が使える。)返すと言う約束だと思います。したがってキャンセルされたか聞く時は、整数値と思って聞く事になります。通常は組み込み定数で聞くでしょうから、値が整数を意識することは少ないかも知れない。 この場合VBAシステムはCancelを問題にしていますが、他の場合は2つも3つも用意している場合もあります。こんな情報を引数として渡してほしいと思っても、渡す仕組みにしてくれていないこともあります。システムが経験に基づいて、予め用意してしまっていて、これを破って広げるには、APIなどを使わなければならなくなります。

midoricya
質問者

補足

詳しい説明ありがとうございます。質問の(2)なのですが、まだ今一 つかめません。(申し訳ありません) 下の文を見ていただきたいのですが、 ★[F_顧客]フォームでは、OPENARGS引数で受け取った値を利用して、フォーム の[票題]プロパティを変更する処理を行います。 Private Sub form_open(Cancel AS Integer)  'OPENARGSプロパティによって[標題]プロパティを変更    Select Case Me.OPENARGS   Case "追加"    ME.Caption="F_顧客(追加モード)"     Case "編集"    ME.Caption="F_顧客(編集モード)"     Case Else    ME.Caption="F_顧客"  End Select End Sub 例えば、上記の場合などはなぜキャンセルが必要なのでしょうか・・・。 キャンセルをされたか聞く、というのはどういうふうに聞くんでしょうか? まったくの初心者で申し訳ありませんm(__)m

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

その他の回答 (2)

回答No.2

私はaccessを使っていませんので、VBについて説明します。 (1)VBにはプログラムの最初に Option Explicit という文を入れると、変数は全て、型宣言しないといけません。 この文が入っていなければ、宣言しなくても構いませんが、#1さん同様 間違えを最小限に抑える為にも宣言したほうがよいと思います。 例えば、「if stDocName <> "" then」と書いたつもりが、 「if stDocNama <> "" then」となっていた場合、 Option Explicitの文が入っていれば、エラーになります。 (stDocNamaという変数名も宣言されていると別ですが) (2)VBにはform_openというイベントプロシジャーはありませんので、 Private Sub Form_Unload(Cancel As Integer) で説明しますと、 プログラム内で[unload me]等フォームを終了させようとすると、 このプログラムが呼び出されます。 Private Sub Form_Unload(Cancel As Integer) dim sts as integer sts = msgbox("終了しますか?",vbYesNo) if ( sts = vbno ) then cancel = true end if end sub とすれば、終了しますか?のメッセージに「いいえ」を選択したら、 フォームを閉じないようにすることができます。 form_openは確かにcancelの必要もないような気もしますが、 システム日付をチェックして、指定日付を過ぎていたら、openしない というような感じで使うのでは、ないでしょうか?(憶測です) accessを使った事のない者が回答するのもどうかと思いましたが、参考までに

midoricya
質問者

お礼

どうもありがとうございました。参考になりました!!

すると、全ての回答が全文表示されます。
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

(1)は変数の宣言部ですね。  文字列型の変数を使いたいから、そのように宣言しています。  BASIC言語は変数宣言なしでも変数を使えますが、C言語などでは明示的に宣言しないと  使えません。  どちらがいいかは一概には言えませんが、型宣言をしてから利用する方が、間違いが  少ないなどのメリットがあります。 (2)は、イベントプロシージャの例だと思われます。  このイベントプロシージャは、フォームを開く時に呼び出され、Cancel という値を  渡すようになっているようです。(VBであらかじめ定義されています)  Cancelが具体的にどういう意味かは手許に環境がないのでわかりませんが、  アプリケーションはこの値を参照して、値によって処理を変えることができます。 質問の意図と違いますか? 違ってたらもう少し補足してください。

midoricya
質問者

お礼

どうもありがとうございました。参考になりました!!

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

関連するQ&A