プロが教えるわが家の防犯対策術!

(1)Dim stDocName As String
 Dim stLinkCriteria As String

例えば上記のような文があると思うのですが、なぜいちいち文字型
にしないといけないのですか?今一わかりません。

(2)pribate sub form_open(cancel as integer)
 というのも見かけるのですが、なにをどういう理由でcancelを
 しなくてはいけないのですか??

宜しくお願い致します

A 回答 (3件)

(1)は変数の宣言部ですね。


 文字列型の変数を使いたいから、そのように宣言しています。
 BASIC言語は変数宣言なしでも変数を使えますが、C言語などでは明示的に宣言しないと
 使えません。
 どちらがいいかは一概には言えませんが、型宣言をしてから利用する方が、間違いが
 少ないなどのメリットがあります。

(2)は、イベントプロシージャの例だと思われます。
 このイベントプロシージャは、フォームを開く時に呼び出され、Cancel という値を
 渡すようになっているようです。(VBであらかじめ定義されています)
 Cancelが具体的にどういう意味かは手許に環境がないのでわかりませんが、
 アプリケーションはこの値を参照して、値によって処理を変えることができます。

質問の意図と違いますか?
違ってたらもう少し補足してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/21 22:45

私は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を使った事のない者が回答するのもどうかと思いましたが、参考までに
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/21 22:44

(1)#1、#2と少し説明点が違っていて、stDocNameはファイル名だと推定しますが、文字列で扱うことが、VBAシステム側がきめているからだと思います。

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

この回答への補足

詳しい説明ありがとうございます。質問の(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

補足日時:2002/10/21 22:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!