複数テキストボックスのNull確認
未入力を防止するための処理になるかもしれません。
'一つでもNullがあったら警告
If IsNull(Me.txt1 + Me.txt2 + Me.txt3) Then
MsgBox "txt1, txt2, txt3 はすべて入力必須です"
End If
'すぺてNullだったら警告
If IsNull(Me.txt1 & Me.txt2 & Me.txt3) Then
MsgBox "txt1, txt2, txt3 の中で一つ以上は入力してください"
End If
すべてのテキストボックスを空欄にする
fa-code
特定のテキストボックスの値をクリアするには、そのテキストボックスのValueプロパティにNullを代入します。
一方、特定のテキストボックスではなく、とにかくフォーム内のすべてのテキストボックスをクリアしたいといった場合には、
「Controls」コレクション内を探索して、"コントロールの種類(ControlTypeプロパティ)がテキストボックスコントロールならNullを代入する"というプログラムで実現することができます。
この方法は、特定のコントロール名を指定していないために、デザイン上でテキストボックスが増えたり減ったりしても、あるいは名前が変わったりしても、プログラムを書き換える必要がないというメリットがあります。
[php] Private Sub cmdClear_Click() '[クリア]ボタンクリック時 Dim ctl As Control On Error Resume Next 'このフォーム内のすべてのコントロールを検索 For Each ctl In Me.Controls With ctl If .ControlType = acTextBox Then 'コントロールの種類がテキストボックスなら値をNull(空)に設定 .Value = Null End If End With Next ctl End Sub [/php]
CSVファイル出力
CSV出力をするサンプルコード
以下のようなコードで、「tbl_在庫」というテーブルを、Cドライブの「temp」フォルダーに、「在庫_20150206.csv」のようなファイル名で出力することができます。
[php] Sub CSVエクスポート() DoCmd.TransferText _ TransferType:=acExportDelim, _ TableName:="tbl_在庫", _ FileName:="C:\temp\在庫_" & Format(Date, "yyyymmdd") & ".csv" End Sub [/php]
改行コードとか、カンマ区切りなどの指定は、エクスポート定義を作成して設定
再クエリでレコードが先頭に移動してしまう
レコードをフォームにしてあると、そのレコードを更新したりして、下記のコマンドを使うと、レコードが先頭に移動してしまい、再度検索をしなければならないこともある。
DoCmd.ShowAllRecords
Me.Requery
DoCmd.RunCommand acCmdRefresh
Dim fg As String
fg = Me!call_MNO ※fgにキーを記憶させている。
DoCmd.ShowAllRecords ※レコード保存して、下記で元のレコードに戻している。
Me.Recordset.FindFirst "SELECT * FROM Sample_table WHERE NO = " & fg & ""
か下記のVBAになる。
なぜか、上のVBAだとエラーになる時があったので、下記にしたらエラーが消えた。
DoCmd.SearchForRecord , , acFirst, "NO = " & fg & ""
別フォームのVBAを呼び出す
処理するホーム test
別のフォーム bets
別フォームのVBAを
Private Sub sample_click()
end sub
を
Public Function sample_click()
End Function
※exit sub が自動で、exit function に変わる。
呼び出す方法は、testフォーム内のVBAに、
Forms!betsu.sample_click
とやれば、別のフォームのVBAを動かすことができた。