• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件分岐)

条件分岐によるExcelデータのインポートに問題が発生する

このQ&Aのポイント
  • 質問者は、Excelでのデータ入力後、Accessにデータをインポートするためのフォームを作成しました。月の日数に応じてインポートするシートの範囲を指定するため、条件分岐を使用しています。しかし、3番目の条件でインポートを指示しても2番目の条件でインポートが行われてしまいます。どうすれば正常にインポートできるのでしょうか。
  • 質問者は、Excelで材料費を入力後、Accessにデータをインポートするためのフォームを作成しました。しかし、条件分岐によるインポート処理で問題が発生しました。3番目の条件でインポートを指示しても、2番目の条件でインポートが行われてしまいます。正確に指定する方法を教えてください。
  • 質問者が作成したフォームでは、ExcelのデータをAccessにインポートする際に条件分岐を使用しています。月の日数に応じてインポートするシートの範囲を指定していますが、3番目の条件でインポートを指示しても2番目の条件でインポートが行われてしまいます。問題の原因と解決策を教えてください。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.1

*スーツのデザイナーでExcelも扱ったことがないので外していたらスミマセン! 多分ですが、単純な条件文のバグと思います。 If Me!月 = "02" Then   DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c30" ElseIf Me!月 = "04" Or Me!月 ="06" Or Me!月 ="09" Or Me!月 ="11" Then   DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c32" Else   DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c33" End If ただし、次のように書いても良いと思います。 Private Sub CommandButton1_Click()   Dim strDatas As String      Select Case Me!月     Case "02"       strDatas = "材料!a2:c30"     Case "04", "06", "09", "11"       strDatas = "材料!a2:c32"     Case Else       strDatas = "材料!a2:c33"   End Select   DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, strDatas End Sub ※月が文字列???とは思いました。 ※Me.月 => Me!月 も気になります。

shinp
質問者

お礼

ありがとうございます。 上のパターンでできました。 月がテキストになっているのは、年、月、日をそれぞれコンボボックスにしているからなのですが、おかしいでしょうか。 また、Me.月 と Me!月 の違いが分かっていません。どのように使い分けるのでしょうか。

その他の回答 (1)

noname#22222
noname#22222
回答No.2

s_husky です。 通常は、全て、<Me.月>という書き方がバグが少ないかと思います。 理由は、<月>が選択肢として表示されるからです。 Access2.0~97までは、<Me!月>という書き方が主流だったように記憶しています。Access2000以降は、<Me.月>になったように記憶しています。 ただ、なお、一部に、<Me.月>と<Me!月>との書き方で異なる表現をしなければならないこともあるようですので注意が必要です。 *年、月、日が文字列ですと SQL文で Like文が使えるなどの利点もあるので一概に言えないかと思います。

shinp
質問者

お礼

ありがとうございました。

関連するQ&A