- 締切済み
VBAの解読依頼です。
Windows2000、Access2000です。あるホームページよりVBAをコピーしました。内容としては起動時のShift+Enterを許すか否かというものです。 Function ChangeProperty(strPropName As String, varPropType , varPropValue) As Integer On Error GoTo エラー Dim dbs As Database, prp As Property Const conPropNotFoundError = 3270 Set dbs = CurrentDb dbs.Properties(strPropName) = varPropValue ChangeProperty = True Exit Function エラー: If Err = conPropNotFoundError Then Set prp = dbs.CreateProperty(strPropName,varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ChangeProperty = False Exit Function End If End Function Function NoShiftKey() Dim msg1 As String Dim msg2 As String msg1 = "有効" msg2 = "無効" Select Case InputBox("パスワード") Case 1234'パスワード ChangeProperty "AllowBypassKey", dbBoolean, True MsgBox msg1 Case 0 ChangeProperty "AllowBypassKey", dbBoolean, False MsgBox msg2 Case Else ChangeProperty "AllowBypassKey", dbBoolean, False MsgBox msg2 End Select End Function これをコマンドボタンクリック時のイベントにします。(参照設定にてDAO3.6にチェックをいれました。) しかし、「dbs.Properties(strPropName) = varPropValue」の一文で「プロパティが見つかりません。」と出ます。そこで、このVBAを解読して頂ける方、どこをどう直すべきなのか、是非ご教授ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
この書き方で問題ありません。 敢えてケチを付けるとすれば、 (1) 関数のスコープが省略されている。(暗黙でPublicとなる) (2) 引数のByVal / ByRef が省略されている。(暗黙でByRefとなる) (3) Database型のクラス名が省略されている。(識別子が一意であれば問題なし) (4) 定数の型が省略されている。(望ましい記述スタイルではないが、特に問題なし) (5) ラベル名にマルチバイト文字が使用されている。(望ましくないが、機種依存文字、記号、特殊文字以外は、特に問題なし) (6) MsgBox関数の第2、3引数が省略されている。(規定値での動作となるため、特に問題なし) (7) InputBoxによるインターフェイスはユーザーフレンドリではなく、望ましくない。 (8) InputBoxがキャンセルされた場合の例外処理が記述されていない。 といったところでしょうか? エラー処理が機能しないのはコードが原因ではなく、プロジェクトの設定でエラーとラップのオプションが[エラー発生時に中断]に設定されているからです。 ところで、ご自分の実力に余るソースコードをどうしようというのでしょうか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>あるホームページより どのホームページ?