Microsoft Access 掲示板

views
4 フォロー
6,278 件中 721 から 760 までを表示しています。
6
驚天動地!前任者失踪丸 2024/02/19 (月) 11:16:29 23e8e@44ebd

つまりこのコードは、人間から同じように見えているものを、コンピュータにも同じように見えるための処理ということでしょうか?

9

ただし、F1フィールドを入力必須にしたいのなら、テーブルのデザインビューでF1フィールドのプロパティの「値要求」を「はい」(テキスト型の場合はさらに「空文字列の許可」を「いいえ」)にしておけば済みますので、実際に使う必要性はないですね。

8

理由はhirotonさんから回答済みです。
このような場合の対処法としては、SubではなくFunctionにして戻り値で次の処理を振り分けます。

Public Function record_idou() As Boolean
 If IsNull(Me.[F1]) Then
    MsgBox "F1未入力時はレコード移動できません"
     record_idou = False '戻り値設定
  Else
     record_idou = True  '戻り値設定   
 End If
End Function
Private Sub cmd前へ移動_Click()
    If record_idou() = True Then
        DoCmd.GoToRecord , , acPrevious
    End If
End Sub
7
hiroton 2024/02/19 (月) 10:47:52 bec36@f966d

Exit Subは「現在のSubプロシージャを終了する」命令です

 Call record_idou
  DoCmd.GoToRecord , , acPrevious

Public Sub record_idou()
 If IsNull(Me.[F1]) Then
    MsgBox"F1未入力時はレコード移動できません"
   Exit Sub
 End If
End Sub

は、イメージとしては

' Call record_idou
Public Sub record_idou()
 If IsNull(Me.[F1]) Then
    MsgBox"F1未入力時はレコード移動できません"
   Exit Sub    '─┐
 End If         ' │ここに飛ぶ
End Sub          '←┘
  DoCmd.GoToRecord , , acPrevious

となり、record_idouプロシージャが終了して、それに続くDoCmd.GoToRecord , , acPreviousが実行されます

つまり、この例では意味のないExit Subですね(続く処理がないのでどうせ何もせずプロシージャが終了する)

6
COCO 2024/02/19 (月) 10:13:55 ddfe5@71072

hatenaさん ありがとうございます。Subプロシージャ、Functionプロシージャの事は少し調べました。何となくしか分かってませんが実際に試そうと思いまして(別のコードで同じフォームに記述しているものがあるので)下記の様な内容のでプロシージャを作成しました。
Public Sub record_idou()
 If IsNull(Me.[F1]) Then
    MsgBox"F1未入力時はレコード移動できません"
   Exit Sub
 End If
End Sub
これをフォームのレコード移動ボタンに下記を記述しました。
 Call record_idou
  DoCmd.GoToRecord , , acPrevious
試すとF1未入力時・・・・のメッセージは出るのですがレコード移動はしてしまいます。Exit Subが効いてません。
何か記述不足しているのでしょうか?

10
rinrin 2024/02/18 (日) 15:03:26 b4dc9@c7f00

hatenaさん。。。。。。いつもいつも すぐな対応ほんとにありがとうございます。。。^^

>>うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。>>
>>会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
>>あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。

会社のACCESSプログラムは 外部に持ち出すことは ぜーったいダメです。。。。;;
システムの会社じゃないので、パソコンもできる人はあまりいない現状です。。。;;
それだけに たとえプログラムのソースコードだからって言っても 持ち出すことはダメ!の一点張りなんです。。。;;
ごめんなさい。。。。。;;

>>正確な情報がつかめないと先に進むのは難しそうです。
ですよね。。。。。。。。;;

とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。
明日 出勤したらすべての確認を行います。。。^^

なにがいけないのかな?????
ありがとうございます^^

9
hatena 2024/02/18 (日) 11:36:43 修正

うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。
会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。

正確な情報がつかめないと先に進むのは難しそうです。

とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。


メインフォーム
フォーム名 MSTmain実査実績一覧
レコードソース (空欄)

メインフォーム上のチェックボックス
コントロールソース (空欄)
名前 Chk北海道、Chk秋田、・・・Chk沖縄 (48個)

メインフォーム上のサブフォームコントロール
名前 SubMST実査実績一覧


サブフォーム
レコードソース MST実査実績一覧
既定のビュー 帳票フォーム または

サブフォーム上のチェックボックス
コントロールソース (空欄)
名前 北海道、秋田、・・・沖縄 (48個)


テーブル MST実査実績一覧
フィールド名 データ型
ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型



沖縄 Yes/No型
 都道府県名のYes/No型フィールドが48個


異なる部分があったら、上記のようなフォーマットで修正したものを提示してください。

8
rinrin 2024/02/18 (日) 08:29:58 b4dc9@c7f00

hatenaさん   れんらくありがとうございます
ただ このACCESSプログラム自体が会社にあるもので。。。;;あたしの記憶で話してます

>>レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
>>既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
>>これらの設定を教えてください。
それらに何かを設定した記憶はありません。空白です。。。

>>メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボック>>>>ス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

>>Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいで>>す。
ごめんなさい。。。;;

>>メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
>>それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。
メインフォームの名前が MSTmain実査実績一覧 です。。。

>>チェックボックスのコントロールソースの設定はどうなってますか。
>>*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあり>>ます。
>>チェックボックスの名前も教えてください。
チェックボックスのコントロールソースの設定も 特に何もしてません 空白です。。。
チェックボックスの名前は  メインフォームが Chk北海道  
                       Chk秋田
                         ⇃
                       Chk沖縄    です。。。
              サブフォームが 北海道
                      秋田
                        ⇃         
                      沖縄       です。。。

>>サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態で>>す。

>>このチェックボックスのコントロールソースと名前も教えてください。
ここも特に何も設定はしてません

>>あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
>>投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
>>下記の画像の赤丸で囲んだボタンです。
ごめんなさい。。。。。;;プログラム自体が会社です。。。;;
見ていただきたいのですが。。。。あたしの手元に プリントアウトした画像が一枚あるだけです。。。;;

宜しくお願い致します

7

レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
これらの設定を教えてください。

メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボックス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいです。

メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。

チェックボックスのコントロールソースの設定はどうなってますか。
*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあります。
チェックボックスの名前も教えてください。

サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態です。

このチェックボックスのコントロールソースと名前も教えてください。

あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
下記の画像の赤丸で囲んだボタンです。
画像1

6
rinrin 2024/02/17 (土) 20:04:18 b4dc9@c7f00

hatenaさん。。。連絡ありがとうございますーー

>>%%{fg:silver}%%{fg:silver}まず、メインフォームのレコードソースの設定を教えてください。
この質問の意味が分かりません。。。。。。。;;
ごめんなさい。。。。::特になにも設定してるわけではありません。;;

>>¥空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
??テーブルかクエリならそのフィールド名を提示してください。
メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボックス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

>>サブフォームのレコードソースの設定を教えてください。
テーブルのMST実査実績一覧をサブフォームとして、、、データベースのような、、、一覧表を作ってあります。。。^^
サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態です。
ホントはクエリを使って、→のようなデーターベースを構築したいのですが、、、、名前は ”SubMAIN実査実績一覧”
MST実査実績一覧を軸に、3つのテーブルを"ID"で、リレーションシップでつなげてます。。。^^
それだとうまく抽出ができないから、、、;;
あきらめて”MST実査実績一覧”だけ単体でテーブルのまま使ってます。。。^^

>>テーブル名またはクエリ名
テーブルは4つ
☆MST実査実績一覧
     ”ID”(主キー)、”年月日”(日付型)、”担当者”(文”字列型)、”都道府県”(整数型)、都道府県(チェックボックス型)が48個並んでいます。。。^^、それと役職(整数型)と交通手段(整数型)があります。。。。^^
☆MST都道府県
     ”ID”、”都道府県”
☆MST役職名
     ”ID”、”役職名”
☆駅から目的地までの交通手段
     ”ID””交通手段”
    IDは全て 整数型(INTEGER)です。基づくレコードは文字列型(STRING)

>>サブフォームの「既定のビュー」の設定も教えてください。%%
これもわかんないです。。。。。;;既定のビューなんて設定してないです。。。;;

とりあえず上記を回答ください。%%
何卒ご指導よろしくお願いいたします

5
hatena 2024/02/17 (土) 17:26:30 修正

ちょっとその説明では状況を読み取れません。
ひとつずつ確認していきますので、回答してください。

まず、メインフォームのレコードソースの設定を教えてください。
空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
テーブルかクエリならそのフィールド名を提示してください。

サブフォームのレコードソースの設定を教えてください。
テーブル名またはクエリ名
そのフィールド名

サブフォームの「既定のビュー」の設定も教えてください。

とりあえず上記を回答ください。

4
rinrin 2024/02/17 (土) 16:08:23 b4dc9@c7f00

Excelだと要領的に厳しい状態なんです。。。
ACCESSなら メインフォームの中にサブフォームを設定して
いろいろなプログラム構築した経験があるから いいかな?
とおもって。。。

ACCESSあきらめて、、EXCELでやるしかないのかな???

3
りんご 2024/02/17 (土) 12:12:05 935bc@0e907

Excelで頑張るのはどうでしょう?

>お怒り、見捨てないで、

例えば、刺身包丁を使って木材加工しようとしていたら、難しいよね、と思いませんか?

2
rinrin 2024/02/17 (土) 11:03:29 b4dc9@c7f00

メインフォームに日付の開始日(テキストボックス 日付)と終了日(テキストボックス 日付)を設けています。その他”ID(コンボボックス Integer)”””社員名(コンボボックス String) 後は都道府県(チェックボックス YesNo型)で48都道府県が並んでいる状態です。それとコマンドボタンを4つ置いてます。(新規、編集、クリア、統計MAP)があります。そこにサブフォーム(一覧表のフォームです。。。)も表示させてあります。”
一つのMSTとなるフォームがあって、全てIDでリレーションシップでテーブルを最初に(クエリではない)つなげています。
主Keyは社員(勝手に番号[ID]を付けています。)です。サブフォームには社員名単位でチェックボックスが48個 都道府県ごとに並んでいます。
最終的には コマンドボタンの”統計MAP”ボタンで どの社員さんが、どこの都道府県を訪れているか 分布図が表示できるものを作りたいと思っています。
お力を貸し願えましょうか。何卒宜しくお願いします

'''Private Sub Cmd新規登録_Click()
MyForms=Forms!MAINMST実査実績!Chk実査flg

'ADO接続開始
Dim Cn ADODB.Connection
Dim Rs ADODB.Recordset

Set Cn = CurrentProject.Connection
Set Rs = New ADODB.Recordset

Rs.Open "MST実査実績一覧",Cn,adOpenkeyset,adLockOptimistic

Dim a,b,c,d,e,f,g As Variant
a=""
a=Nz(Dlookup("ID","MST実査実績一覧","実査住所='" &
Me.Txt実査住所.Value & "'),"" AND "& "担当者='"

& Me.Cmb実査担当者.Value & "'"),"")

a=MsgBox("登録しますか?",vbYesNo + vbDefaultButton1)
If a = vbYes Then

'登録
Rs.AddNew
'上記の個所で実行時エラー”テーブルが設定されたレコードが必要なので、レコードの追加や変更ができません。と表示されてしまいます。
Rs!年月日 = Me.Txt実査実施日
Rs!担当者 = Me.Cmb実査担当者
'チェックボックス
Rs!北海道=Me.Chk北海道.Value
Rs!青森=Me.Chk青森.Value
' ⇃
' ⇃
' ⇃
Rs!沖縄=Me.Chk沖縄.Value
Me.SugMST実査実績一覧.Form.Filter=""
Me.SubMST実査実績一覧.Form.FilterOn=False
Rs.Update

a=Dmax("ID","MST実査実績一覧")
Me.Cmb実査ID.Value=a
b=Dlookup("年月日","MST実査実績一覧","ID=" & a)
Me.Txt実査実施日.Value=b
Msgbox("登録完了しました。"

'ADOを切断
Cn.Close
Set Cn=Nothing
End Sub'''
お怒りなことは重々承知の上、再度投稿させていただきます。
何卒 何卒ご指導よろしくお願いいたします。。。見捨てないでください。。。;;

3

非公式なので、事前通告なしに使えなくなる可能性はありますね。

公式のものなら、使えなくなる前に事前通告はあるはずです。

その辺をどう考えるか次第ですね。

2

かつては ISAMStats ってのが非公式で存在してたけど、途中で無くされちゃいましたね

1

そもそも、csvもexcelもデータベースとして扱っているはずなのに、
Data Source=を使用しないのは、なぜなのでしょうか?

Data SourceはADODB.Connectionの必須プロパティになりますので
使用していない」 のではなく
タークンさんの記述方法では 「明示していない」 というのが正確な表現になります

Sub Sample1()
    Dim adoCn As ADODB.Connection
    Dim incantation As String
    Dim testDir As String
    
    testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
    
    Set adoCn = New ADODB.Connection
    adoCn.Provider = "Microsoft.ACE.OLEDB.12.0"
    adoCn.Properties("Extended Properties") = "Text;HDR=No"
    adoCn.Open testDir
    incantation = adoCn.ConnectionString
    adoCn.Close
    
    adoCn.Open incantation
    Debug.Print adoCn.State
    adoCn.Close
    Set adoCn = Nothing
    
    MsgBox "接続文字列中のData Sourceの位置は " & _
               InStr(1, incantation, "Data Source", vbTextCompare)
End Sub

  
ちなみに CSVをレコードセットとしてOpenするのが目的でしたら、以下のような簡略表記も可能です

Sub Sample2()
    Dim adoRs As ADODB.Recordset
    Dim testDir As String
    Dim strSQL As String
    
    testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
    strSQL = "SELECT * FROM [Text;DATABASE=" & testDir & ";HDR=NO;].holiday.csv;"
    
    Set adoRs = CurrentProject.Connection.Execute(strSQL)
    If Not adoRs.EOF Then MsgBox "CSVの列値: " & adoRs.Collect(0)
    adoRs.Close
    Set adoRs = Nothing
End Sub
1

※前回hatenaさんに忠告いただいたソースコードの掲載の仕方 やり方がわからないです。。。。;;

前回の回答のリンク先にていねいに説明してありますので、もう一度よく読んで、質問文を編集してください。

あの説明で分からないとなると、このような掲示板でのやりとりで解決に至るのは困難だと思います。

あと、フォームの構成がどうなっているかの説明も追加してください。
下記の点についての情報を追記してください。

メインフォーム、サブフォームのレコードソースの設定
リンクフィールドの設定
テーブルのフィールド構成、フィールドのデータ型、主キー設定

5

人間には同じように見えても、コンピューター(Access)からはまったく別物です。

例えば、
人間が見てテキストボックスが空の場合に、入力を即したい場合がよくあります。
未入力(Null)、""(空文字列)、スペースのみ、は人間からみたらすべて同じですが、
コンピューターからはすべてまったく別物に見えます。
未入力(Null)、スペースのみを""に変換して、テキストボックスが空だとコンピューターにもわかるようにしてあげる必要があります。

コンピューターは人間のように融通がききませんので。

最近はAIで結構融通が利くようになってきていますが、VBAは一昔前から進歩してませんからね。

4
すずやん 2024/02/16 (金) 17:39:32 >> 3

Nullと空欄は厳密には違います。

よって「= ""」で「""」と判断できるのは「""」だけで、NULLだと同じではないと判断されます(確かそうだったはず)

プログラマーは過去に確実に動いたコードを多用する傾向があるので、おそらく前担当者がその方法に慣れていたのではないでしょうか。

3
驚天動地!前任者失踪丸 2024/02/16 (金) 17:19:28 23e8e@44ebd >> 2

正にIf文で使われております。
質問の為当該箇所のみ抜粋して記述しました。

Nullも長さのない文字列も同じように見えるのに、わざわざ変換をかけていることに
どのようなメリットがあるのか、識者の皆様の考えをお聞かせいただきたいです。

2

そのコード単体で1行になることはないはずです。エラーになりますので。

たぶん、下記のような感じで使われているのではないでしょうか。

If Trim(Nz([テキストボックスの名前], "")) = "" Then
   'テキストボックスが未入力(Null)だったりスペースのみの場合の処理
Else
   'テキストボックスにスペース以外の文字が入力されいるときの処理
End If
5

haetnaさんの回答にある Mid(strFilter, 6) は何かで見た事がありますがやっと意味がわかりました。”はカウントせずに半角スペースはカウントに入るのですね。因みにMe.FilterOn = (strFilter <> "")の右辺はTrueと同じ意味になるのでしょうか?

(strFilter <> "")は、strFilter が ""(空文字列) でなければ True、""(空文字列) なら False になります。
下記のコードと同義になります。

If strFilter <> "" Then
    Me.FilterOn = True
Else
    Me.FilterOn = False
End If

5行のコードが1行で済むのでついつい使ってしまいますが、コードの意味のつかみやすさからいけば、5行で書いた方がいいですね。

hirotonさんの回答にある Private Sub setFilter() 'フィルタをかける処理 ですが変数自体にコード記述が出来るのですね? フォーム上のイベントにはそれは出来ないのでVBA画面に直接記述したらいいのでしょうか?

VBAに直接記述します。
Private Sub setFilter() は変数ではなくプロシージャです。
Subプロシージャ、Functionプロシージャについて調べてください。

#1 のhirotonさんの最初のコードの 'フィルタをかける処理 の部分を #2 の私のコードに置き換えればOKです。

1
すずやん 2024/02/16 (金) 16:37:43

2重に処理しているようですね。
まず「Nz」でテキストボックスに文字列が入っていればそれを、入っていない場合は「""」(空欄)を「Trim」に渡しています。
「Trim」では渡された文字列に前後の空白があればこれを削除します。「""」が渡された場合は何もしません。

ただ最後の「 = ""」は謎ですね。
そんな使い方できるんだろうか。

21

IDが増えても(レコード件数が増えても)、コードを修正する必要はないです。
全レコードを対象にチェックします。

実際にやってみてうまくいかなかったのでしょうか。
もし、そうなら、どのようなデータでどのような結果になったのか、どこが想定と違うのか説明してください。

4
COCO 2024/02/16 (金) 15:22:21 ddfe5@469dd

hirotonさん haetnaさん ありがとうございました。
haetnaさんの回答にある Mid(strFilter, 6) は何かで見た事がありますがやっと意味がわかりました。”はカウントせずに半角スペースはカウントに入るのですね。因みにMe.FilterOn = (strFilter <> "")の右辺はTrueと同じ意味になるのでしょうか?
hirotonさんの回答にある Private Sub setFilter() 'フィルタをかける処理 ですが変数自体にコード記述が出来るのですね? フォーム上のイベントにはそれは出来ないのでVBA画面に直接記述したらいいのでしょうか?
知識不足で、すみません。

20

hatenaさま 参考にさせていただき、今テーブルに入力しているID19から22のチェックができるようになりました。今後チェックするIDが34まで増え、19から22、その途中27から34も一度にチェックしたい時などには、どのように書き換えればよろしいでしょうか?DMin("ID", "T1")やDMax("ID", "T1")を19や34にして複数同じなものを作る以外のスマートの方法をお願いできますか?

5
hiroton 2024/02/16 (金) 12:19:28 b198c@8db65

マスタとトランザクションをキーワードに調べてみることをオススメします

「単価」は一般的にその商品に付随するデータ、ユニークなキーによって決定される単一のデータなので「集計データ」と見なすことはまずないでしょう

実際にどのように管理すべきか?は検討の余地の有るところですが今回の質問とは関係の薄い話ですね

4
りんご 2024/02/16 (金) 12:18:08 935bc@0e907 >> 3

新しい質問で、テーブル構造を提示した上で、意見募集するのはどうでしょう?

3

横からすいません。
集計データをテーブルに格納しない場合、例えば商品Aの単価が100円から200円に変わった場合などに合計金額などに不都合が発生するように感じたのですが、問題ないのでしょうか?

2
苦節1年 2024/02/16 (金) 11:44:14 ca7cf@20718

ありがとうございます!
そもそも論が聞けてスッキリしました。
頭をリフレッシュして違う方向からトライしてみようと思います。
なんとか抜け出せて本当に助かりました。

1

「総合計」のような集計データはテーブルには格納しないというのが、データベース設計の基本です。
必要に応じて、その都度計算するような設計にします。
集計クエリ、演算コントロールでのSum,Count関数、DSum,DCount関数など、状況に応じて適切な方法を使いわけましょう。

例えば、今回の質問のフォームでは演算コントロールでその都度、計算してますよね。

どうしてもテーブルに格納するというのなら、サブフォームの更新後処理で代入するということになります。
が、更新や入力か必ずそのフォームから行われるのならいいですが、そうとは限らない場合もあるでしょうし、更新後処理がエラーなどでうまくいかないなど、など、、、その集計が正しいという保証がないので、通常はそのようなことはせずに、その都度計算します。

4
すずやん 2024/02/16 (金) 09:14:07

こちら解決できました。ありがとうございます。

原因は下記リンク先にある通り「CDO.Message」は「SMTP over SSL (ポート465)」の SMTP認証方式を使う為、「TLS/STARTTLS (ポート587)」のSMTP認証方式には対応していないとのことでした。

https://mofuken.blogspot.com/2014/07/windows-cdomessage.html

ただ現在使用しているメールサーバーが「SMTP over SSL (ポート465)」に対応していない為、ちょっと修正する必要がありそうです。
当面はSSLをFALSにしてポートを25で使うことで回避することにしました。

3
すずやん 2024/02/16 (金) 09:09:52 >> 2

ご返信ありがとうございます。
原因は教え得頂いたリンクの2番目と同じでした。
>VBAからCDOを使用してメール送信時にサーバ接続エラー

こちら無事解決しました。

2

ちょっと調べましたがこれと同じでしょうか?

CDOでMicrosoft365メールが使えなくなったので調べてみた #mail - Qiita
https://qiita.com/mindwood/items/c5b4475db6ddbfdb0372
中小企業情シス稼業 : VBAからCDOを使用してメール送信時にサーバ接続エラー
https://www.1josys.com/archives/38212996.html

1
すずやん 2024/02/15 (木) 16:04:06

なぜか文字コードを記載すると、表記が文字化けしてしまいましたので、別途記載します。
コード中の「文字コード」という部分には「ISO-2022-JP」と記載しています。

3
hiroton 2024/02/15 (木) 14:14:06 48bf2@f966d

具体的なフィルタ文字列生成部分に関しては、複数の組み合わせに対して、「直前の出力があった場合だけ"AND"を出力する」ということになりますが、これを毎回チェックするのはめんどくさいので、「出力があればとりあえず" AND "を付ける」「最後に無駄な" AND "を消す」ようにします


これ入力してたらコード例をhatenaさんが投稿されたのでコードはそちらを参考に


このように、「似たような処理」を「共通になるような処理」に落とし込めればすっきりしたコード記述ができるようになります

19

数値が重複する場合があるんですね。
はい、あります。その場合もあると お伝えしなければいけなかったのですね。すみません。

伝達事項の少ない中で、ご返信本当にありがとうございます。
上記を参考に作成してみます。また壁に当たるかと思いますが、ご指導お願いいたします

18

質問不成立です

すみません。

2

未選択(Null)の場合は条件なしということですね。

条件式変数に選択してあれば条件を追加していくという方法でいいでしょう。

フィールド名は適当、データ型は数値型の場合ですので、実際のものに合わせて修正してください。

Dim strFilter As String

If Me.[cb1].Value <> "" Then
    strFilter = strFilter & " AND フィールド1=" & Me.[cb1].Value
End If
If Me.[cb2].Value <> "" Then
    strFilter = strFilter & " AND フィールド2=" & Me.[cb2].Value
End If
If Me.[cb3].Value <> "" Then
    strFilter = strFilter & " AND フィールド3=" & Me.[cb3].Value
End If

strFilter = Mid(strFilter, 6) '先頭の" AND "を削除
Me.Filter = strFilter
Me.FilterOn = (strFilter <> "")