- ベストアンサー
条件分岐によるExcelデータのインポートに問題が発生する
- 質問者は、Excelでのデータ入力後、Accessにデータをインポートするためのフォームを作成しました。月の日数に応じてインポートするシートの範囲を指定するため、条件分岐を使用しています。しかし、3番目の条件でインポートを指示しても2番目の条件でインポートが行われてしまいます。どうすれば正常にインポートできるのでしょうか。
- 質問者は、Excelで材料費を入力後、Accessにデータをインポートするためのフォームを作成しました。しかし、条件分岐によるインポート処理で問題が発生しました。3番目の条件でインポートを指示しても、2番目の条件でインポートが行われてしまいます。正確に指定する方法を教えてください。
- 質問者が作成したフォームでは、ExcelのデータをAccessにインポートする際に条件分岐を使用しています。月の日数に応じてインポートするシートの範囲を指定していますが、3番目の条件でインポートを指示しても2番目の条件でインポートが行われてしまいます。問題の原因と解決策を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
*スーツのデザイナーで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!月 も気になります。
その他の回答 (1)
s_husky です。 通常は、全て、<Me.月>という書き方がバグが少ないかと思います。 理由は、<月>が選択肢として表示されるからです。 Access2.0~97までは、<Me!月>という書き方が主流だったように記憶しています。Access2000以降は、<Me.月>になったように記憶しています。 ただ、なお、一部に、<Me.月>と<Me!月>との書き方で異なる表現をしなければならないこともあるようですので注意が必要です。 *年、月、日が文字列ですと SQL文で Like文が使えるなどの利点もあるので一概に言えないかと思います。
お礼
ありがとうございました。
お礼
ありがとうございます。 上のパターンでできました。 月がテキストになっているのは、年、月、日をそれぞれコンボボックスにしているからなのですが、おかしいでしょうか。 また、Me.月 と Me!月 の違いが分かっていません。どのように使い分けるのでしょうか。