ACCESSの式の意味

このQ&Aのポイント
  • アクセスVBAの基礎を学習中の初心者が、以下のコードについて理解を深めたいと思っています。
  • コードのポイントとして、バリデーションチェックや条件分岐について説明してください。
  • また、if文に関して、どのような条件で終了する必要があるのかも教えてください。
回答を見る
  • ベストアンサー

ACCESSの式の意味

近日初めてアクセスVBAを勉強し始めた者です。まだコードが読めないのでそれぞれの言葉の意味から始めています。 以下のコードの4点について意味を教えてください。 'バリデーションチェック If Me.TXT_FileName & "" = "" Then MsgBox "ファイル名を指定してください", vbCritical Exit Sub End If 一点目、 & "" = "" 二点目、vbCritical 三点目、Sub 四点目、 End If ←ifから始めた文は毎回end ifで終わる必要があるのでしょうか。 レベル低いですが困っています。宜しくお願いします。

  • CSS
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>一点目、 & "" = "" &は文字列を連結する時に使います。 Me.TXT_FileName のMeは恐らくフォームでしょう。つまり、 フォーム内のTXT_FileNameというテキストボックスの内容、 すなわちValueプロパティの値と、空文字列を連結しています。 これが空文字列かどうかを調べるIf文です。 書き換えると、If (Me.TXT_FileName & "") = "" Then こんな 感じです。テキストボックスのが空欄の場合、空文字列である 場合と、Nullである場合があります。Nullの場合はIsNull関数 以外はいかなる条件式を使ってもFalseになるため、空文字列を 結合しないで If Me.TXT_FileName = "" とすると、意図した 結果になりません。 >二点目、vbCritical MsgBoxにはアイコンを表示することができます。 vbCriticalはアイコンの一つで、最も重大な警告を表わします。 図形は赤い●に白い×です。他にはvbExclamation(黄色い▲に 黒い!)、vbQuestion(白い○に青い?)vbInformation(白い○に 青い!)があります。何も指定しないとアイコン無しになります。 >三点目、Sub 結果を返さないプロシージャのことです。途中でプロシージャから 抜ける(終了する)時にExit Sub というステートメントを使います。 結果を返すFunctionではExit Functionとなります。 >四点目、 End If ←ifから始めた文は毎回end ifで終わる必要があるのでしょうか。 1行で完結するIf文では不要ですが、複数行のThen節、Else節を 持つか、改行した場合はIfブロックの終端を表わすため、必ず End Ifが必要です。 1行で完結するIf文とは以下のような例です。 If Text = "" Then MsgBox "空だよ" Else MsgBox "何かある" 尚、コロンを使えば複数のステートメントでも1行にできます。 If Text = "" Then MsgBox "空だ": MsgBox "カラだ"

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

こちらではなく JavaScript ( http://oshiete.goo.ne.jp/category/254/ --おしえてgooの場合) できかれたほうがよいでしょう。

関連するQ&A

  • アクセスの印刷VBAを教えて下さい

    アクセス初心者です。 バージョンは2002を使っています。 ネットで探して詳しく分からないままプログラムしています。 フォームで印刷のコマンドボタンを作ってそのボタンをクリックすると表示されてる 1ページのみ印刷したいのですが全てのレコードが印刷されてしまいます。 どうすればいいのか教えて下さい。 下記が今現在のVBAです。 Private Sub 印刷_Click() Dim varCopies As Variant varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定") If Len(varCopies) = 0 Then Exit Sub End If If IsNumeric(varCopies) = False Then MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub ElseIf CLng(varCopies) = 0 Then MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub End If If MsgBox("印刷しますか?" & vbCrLf & "部数=" & varCopies _ , vbYesNo + vbInformation, "印刷の確認") = vbYes Then DoCmd.OpenForm "伝票", acPreview, , , acFormReadOnly DoCmd.PrintOut acPrintAll, , , , CLng(varCopies) DoCmd.Close acForm, "伝票" End If End Sub

  • DTPickerで入力したらの検索が出来なくなりました。

    お世話になります。 質問ですが 以下のVBAコードがあります。Sheet3のCells(2, 6)に記入した日付によってSheet1の検索を一部行うのですが、Cells(2, 6)への入力をDTPickerを使って行うようにしたら該当する日付がありませんのエラーが帰ってきます。たぶん書式が違うせいかなと思うのですがどうすればいいのでしょうか? どなたか分かる方いらっしゃいますか?よろしくお願いします。  Private Sub CommandButton1_Click() Dim trgA As Variant, trgB As Variant With Worksheets("Sheet3") If IsEmpty(.Cells(2, 7)) Then MsgBox "個数が空です。", vbCritical: Exit Sub '日付 trgA = Application.Match(.Cells(2, 6).Value2, Worksheets("Sheet1").Range("A:A"), 0) If IsError(trgA) Then MsgBox "該当する日付がありません。", vbCritical: Exit Sub '製品名 trgB = Application.Match(.Cells(2, 4).Value, Worksheets("Sheet1").Range("2:2"), 0) If IsError(trgB) Then MsgBox "該当する製品名がありません。", vbCritical: Exit Sub If Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = "" Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value Else If MsgBox("上書きしますか", vbQuestion + vbOKCancel) = vbOK Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value End If End If End With End Sub

  • 意味の説明

    VBAだと思うのですが 次はそのプログラムの意味で,with以下のコードの意味がどういうことを意味しているか、全くわからないので解釈していただけませんか。 私はVBAはしろうとです。 If i = 0 Then MsgBox MY_FOLDER & " には、CSVファイルが存在しません。", vbCritical: Exit Sub   Application.ScreenUpdating = False   Application.DisplayAlerts = False   For Each n In myCSVFnames    xlFileName = Mid$(n, 1, InStrRev(n, ".csv")) & ".xls"    If Dir(MY_FOLDER & "\" & xlFileName) = "" Then      With Workbooks.Open(MY_FOLDER & "\" & n, Format:=2)       .SaveAs MY_FOLDER & xlFileName       Workbooks(xlFileName).Close False       j = j + 1      End With    End If   Next n

  • Accessフォームの作成

    Accessで作成されているシステムの ファイル取り込みフォームにある実行ボタンを押下すると、 下記のメッセージが表示されます。 「select case に対応する case がみつからない。」 どこかで指定しないといけないのでしょうか? Private Sub Cmd実行_Click() On Error GoTo Err Dim StrSql As String Dim IntNDCnt As Integer Dim IntNTCnt As Integer '確認メッセージの出力 If MsgBox("処理を開始します。よろしいですか?", vbInformation + vbYesNo, "データ取込処理") = vbNo Then Exit Sub End If '対象データ別の処理実行 Select Case Me.Cmb対象.ListIndex Case -1 'エラー MsgBox "読込むデータを指定してください", vbCritical, "データ取込処理" Exit Sub Case 0 '全データ If F_手数料明細読込() = False Then Exit Sub End If If F_奨励金読込() = False Then Exit Sub End If If F_減額読込() = False Then Exit Sub End If If F_預り金読込() = False Then Exit Sub End If Case 1 '手数料データ If F_手数料明細読込() = False Then Exit Sub End If Case 2 '奨励金データ If F_奨励金読込() = False Then Exit Sub End If Case 3 '減額データ If F_減額読込() = False Then Exit Sub Case 4 '預り金データ If F_預り金読込() = False Then Exit Sub End If End Select 今は、Case 4が黄色に反転します。

  • Accessでのログインについて

    Private Sub txtCountPass_AfterUpdate() Dim TextBoxA As TextBox Dim TextBoxB As TextBox Set TextBoxA = Me.txtNamePass ' Set TextBoxB = Me.txtCountPass Const NamePass = "sample" ' Const CountPass = "1234" If TextBoxA = NamePass Then ' If TextBoxB = CountPass Then ' DoCmd.OpenForm "frm_メニュー" ' DoCmd.Close , "frm_パスワード" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical End If Else MsgBox "IDが異なります。", vbOKOnly + vbCritical End If End Sub 上記VBAを使ってログインしようとしているのですが、実行されません。frmの2行が間違っているのでしょうか、それとも他が違うのでしょうか?

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • 下記質問Vol.2です

    strSQL = "insert into 商品マスタ values(" & txtループ(0).Text & ",'" & _ txtループ(1).Text & "'," & txtループ(2).Text & ")" strSQL2 = "update 商品マスタ set 商品名=" & "'" & txtループ(1).Text & "'," & "単価=" & _ txtループ(2).Text & " where " & "商品ID=" & txtループ(0).Text If txtループ(0).Text = "" Then MsgBox "商品IDに何かを入力してください" txtループ(0).SetFocus Exit Sub End If If txtループ(1).Text = "" Then MsgBox "商品名に何かを入力してください" txtループ(1).SetFocus Exit Sub End If If txtループ(2).Text = "" Then MsgBox "単価に何かを入力してください" txtループ(2).SetFocus Exit Sub End If vol.3へ 関連URL:http://www.okweb.ne.jp/kotaeru.php3?q=160999

  • [と”の意味を教えてください。

    http://okwave.jp/qa/q5945112.html を参考に、 Sub test1() Dim i As Integer i = 2 If i Like "[1-3]" Then MsgBox i & "です" End If End Sub Sub test2() Dim i As Integer i = 2 If i Like "[1-5]" Then MsgBox i & "です" End If End Sub Sub test3() Dim i As Integer i = 2 If i Like "[1-10]" Then MsgBox i & "です" End If End Sub を作ったのですが、 test3はうまく行きません。 意味としては、 iが "[1-10]"の中の数字の間のどれかであれば、 MsgBox i & "です" を表示させたいです。 でも上記のマクロを実行させた結果、 "[1-10]"の中で計算が行われてるのではないかと思います。 だから、test3は、1-10=-9 という事になり、msgboxが反応しないのではないかと思っています。 でもそうすると、test2だって "[1-5]"は、-4になって、i=2とは違う値なのに なぜMsgBoxが反応してしまうのかわかりません。 でもそもそも[と”の意味が分からないのでそこから教えていただけませんか? “の意味、は二つで挟んで文字列にすると思っています。

  • マクロにおける条件文の作成の件

    以下の様に条件付きの計算式を作成しました。CommandButton3を押しても 計算しなかったり、TextBox3.Value > TextBox1 ではないときでもエラー メッセージが出ます。どこに欠点があるのか教えて下さい。 Private Sub CommandButton3_Click() Dim row As Integer If TextBox1.Value = Empty Then MsgBox ("Aが空欄です") Exit Sub End If If TextBox2.Value = Empty Then MsgBox ("Bが空欄です") Exit Sub End If If TextBox3.Value = Empty Then MsgBox ("Cが空欄です") Exit Sub End If If TextBox4.Value = Empty Then MsgBox ("Dが空欄です") Exit Sub End If If TextBox3.Value > TextBox1.Value Then MsgBox ("Cの値をAの値より小さくしましょう!") Exit Sub End If If TextBox4.Value > TextBox2.Value Then MsgBox ("Dの値をBの値より小さくしましょう!") Exit Sub End If TextBox5 = Round(TextBox1 * TextBox2 - (TextBox1 - TextBox3) * (TextBox2 - TextBox4) / 2, 0) End Sub

  • 忍者へFTP接続でVBAでファイルをアップロード

    忍者へFTP接続でVBAでファイルをアップロードしたいです。 http://officetanaka.net/excel/vba/tips/tips47.htm を参考に実践してるのですがうまくできません。 FFFTPを使っての手動でのアップロードは問題なく行えます。 ----------------------------------------------------------------- Sub Sample1() Dim FTP, rc As Long, Server As String, User As String, Pass As String Dim Target As String, Folder As String Set FTP = CreateObject("basp21.FTP") ''FTPオブジェクト Server = "ftp.xxxxx.com" ''ホストアドレス User = "toru_tanaka" ''ユーザー名 Pass = "password" ''パスワード Target = Application.GetOpenFilename() ''送信ファイル If Target = "False" Then Exit Sub Folder = "/" ''送信フォルダ rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If MsgBox Dir(Target) & "を送信しました。", vbInformation FTP.Close End Sub ----------------------------------------------------------------- の rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If これは通過できるのですが、 rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If で0が返るようで、送信できませんでした。となります。 トップページの階層にアップしたい場合は Folder = "/" でいいんですよね? Folder = "/" にしても Folder = ""にしても失敗します。 FFFTPのメッセージランを見ていると、 VBAで送信できなくても ----------------------------------------------------------------- >TYPE A 200 転送タイプを A にセットしました >PASV 227 Entering Passive Mode (***). ダウンロードのためにホスト *** (***) に接続しています. (TCP/IPv4) 接続しました. (TCP/IPv4) >MLSD 150 ASCIIモードのデータ接続をオープンします MLSD 226 転送が完了しました ファイル一覧の取得は正常終了しました. (821 Bytes) ----------------------------------------------------------------- が表示されます。 何が間違ってるのでしょうか? ご教授よろしくお願いします。

専門家に質問してみよう