アクセスのフォームに内容という名前のテキストボックスがあります。
このテキストボックスのコントロールソースも同じく内容という名前ですが、この内容の中身の改行コードはchr$(0A)のみなので、アクセスのフォームでは改行表示されないので、chr$(0D)+chr$(0A)に置き換えたいのです。
その為に、このテキストボックスのコントロールソースに、
= Replace ( [内容] , chr(10), chr(13) & chr(10), , , 1)
としましたが、エラーとなります。
エラーの内容は、指定した式の構文が正しくありません。
たとえば値または識別子が前にないのにカンマを指定しています。
というエラーです。
どうすればいいのでしょうか?
以上、よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
こんばんは。
私は、Access 専門ではありませんが、2003で、標準モジュールにユーザー定義関数を作って、エラーを出さずに、テキストボックスのコントロールソース表示させることは出来ます。また、Chr(10)→ Chr(13)&Chr(10) コードも変換し、テキストボックス内に、改行させることが可能です。
しかし、多少、作りながら、元のソースは何かと、もう一度、ご質問を読んでみると、
>このテキストボックスのコントロールソースも同じく内容という名前ですが、この内容の中身の改行コードはchr$(0A)のみなので、
どうも、よく分かりません。テキストボックスの名前、「内容」に、どのようにして、Chr$(&h0A) つまり、Lf コードのみのテキストを入れるのでしょうか?Winの環境だと、多少、特殊な環境下にあるように思います。Form上では、Label の場合、そのようにします。
プロパティの「Enter入力時の動作---フィールドに行を追加」にしておけば、通常、改行コード(CrLf)が入りますが、どのようになさっているのでしょうか?エディタで、Crコードだけを削除して、テキストボックスに貼り付けましたが、実際にどのようにしているのかは、よく分かりませんでした。通常、表面に出てくるテキストデータでは、このような処理はめったにしたことがありません。
今回のテストは、
'標準モジュールで、以下のようにしてみました。
Public Function myReplace(arg1 As String) As String
If arg1 <> "" Then
'一つでも、CrLf があれば、そのまま出力
If InStr(arg1, vbCrLf) > 0 Then
myReplace = arg1
Else
myReplace = Replace(arg1, vbLf, vbCrLf)
End If
End Function
プロパテイのコントロールソース
=myReplace(nz([TxBx2],""))
もしかしたら、ぜんぜん、見当はずれのことを書いているかもしれませんが、そうでしたら、レスは必要ありません。
Wendy02さん
詳細なご回答ありがとうございます。
テキストボックスの内容は、テーブルにある内容というフィールドで、これはエクセルを読み込んだデータです。
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,・・・
エクセルのセルの中の改行はvbLFのみでした。ですから、これをアクセスのフォームでは、改行されません。このテキストボックスの名前も内容という名前にしています。テーブルのフィールドと同じ名前ですが。
それで、プロパテイのコントロールソースに
=myReplace(nz([TxBx2],""))を入れたらエラーになりませんでした。
でも、フォーム表示したら、内容のテキストボックスは#エラーと出て、ここは編集出来ないです。
アクセスって思うようにいかないので、非常に難しいと思い知らされています。よろしくお願いします。
No.4
- 回答日時:
こんにちは。
Wendy02です。>それから、myReplace関数で、End Ifが1つ足りないのでエラーとなります。End Ifを追加して下さいね。
本当ですね。どうしてミスったのか、自分でも訳が分かりません。
>Private Sub Form_Current()のところで、
>Me.内容.Value = myReplace(Nz(Me.内容.Value, ""))と
>入れてみたらうまくいきました!
質問者と回答者が、逆転してしまいましたが、そうですね、私も、そちらのほうがスッキリしているように思います。不完全なレスのために、お手数かけさせてしまい、大変にすみません。私は、年内、もう一度、最初からやり直しするつもりです。
いいえ、これはWendy02さんのお陰です。
貴重なヒントを頂けて、感謝しています。
どうもありがとうございます。
これからもお互いに頑張りましょう。よろしくお願いします。
No.3
- 回答日時:
こんにちは。
Wendy02です。>=myReplace(nz([TxBx2],""))を入れたらエラーになりませんでした。
>でも、フォーム表示したら、内容のテキストボックスは#エラーと出て、ここは編集出来ないです。
もちろん、TxBx2 は、私のつけたコントロールのTextBox の名前ですから、そのままでは、エラーは出ます。
そちらのフィールド名に合わせれば、
=myReplace(nz([内容],""))
ということかな?フィールドにきちんとあわせてくださいね。
こちらでは、しっかり改行はされています。エラーも出ていません。
この回答への補足
遅くなりました。
プロパティのコントロールソースではなく、
Private Sub Form_Current()のところで、
Me.内容.Value = myReplace(Nz(Me.内容.Value, ""))と
入れてみたらうまくいきました!
ありがとうございます。
それから、myReplace関数で、End Ifが1つ足りないのでエラーとなります。End Ifを追加して下さいね。
これに関して、何かコメントお願いします。その後、締め切ります。
よろしくお願いします。
すみません。間違いです。実際は、=myReplace(nz([内容],""))
と入れています。でも、エラーですからどこかが間違ってると思います。別のサンプル作ってよく調べてみます。
ありがとうございます。また、何か判明したら報告します。よろしくお願いします。
No.1
- 回答日時:
Accessのバージョンは何でしょう?
2000にはReplace等の新規組み込み関数が
クエリなどで使えないというバグがあります
使えよるようにするには
ユーザ関数内でこれらの関数を使い結果を返すようにします
Public Function myReplace(expression, find, replace, start, count, compare) As String
myReplace = Replace(expression, find, replace, start, count, compare)
End Function
この回答への補足
やはり、コントロールソースにReplaceとかmyRepreceを使うのは非常に困難なので、あきらめることにします。
コントロールソース以外に方法はないでしょうか?
とにかくchr$(0A)をchr$(0D)+chr$(0A)に置き換えて、フォームのテキストボックスに入れる方法をお願いします。
CHRONOS_0さん
早速の回答ありがとうございます。
バージョンは2003です。そうですか。バグなんですか。
それで、ユーザ関数に組み込んで見ました。
しかし、エラーでうまくいきません。もう一度見直してみます。
申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) vba sendKeysを送る相手のソフトを前面に開くには 1 2023/07/20 16:42
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) 該当セルに行替えを含むデータを命令文に入れて、2行に表示したい。 5 2023/07/20 11:51
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
ACCESS2000のレポートのコントロールソース内で文字列を結合したい
Access(アクセス)
-
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
-
4
ACCESSでの改行コード
その他(データベース)
-
5
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
6
accessで項目内の文字を自動改行させたいと思っています。
その他(データベース)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
車って ぶつかったらわかりま...
-
子どもにボール遊びをさせたら...
-
カーセックスしたことあります...
-
電車の急病のお客様の救護って...
-
車の運転で、かなりゆっくりバ...
-
高級車と高額だけど高級車じゃ...
-
ドアパンチして逃げる人の割合...
-
「ご移動ください」は正しい敬...
-
昨日スーパーの駐車場で隣の車...
-
高速道路から一般道に下りる際...
-
車の左前にこんな傷がありまし...
-
バルサンなどを車に使っても大...
-
落窪物語の現代語訳を教えて下さい
-
全くの無傷の当て逃げをしたこ...
-
教習所でマニュアル車のギアチ...
-
車にボールが当たったかもしれ...
-
車内のムカデの退治方法教えて!!
-
前面道路4m、駐車場幅2.8mにア...
-
車庫証明に関する質問。(2km以...
-
駐車中の私の車を勝手に写真を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
車って ぶつかったらわかりま...
-
車内にカメムシが巣を作った?
-
子どもにボール遊びをさせたら...
-
カーセックスしたことあります...
-
車の運転で、かなりゆっくりバ...
-
バルサンなどを車に使っても大...
-
助けて下さい!車のフロントガ...
-
ドアパンチして逃げる人の割合...
-
昨日スーパーの駐車場で隣の車...
-
車の左前にこんな傷がありまし...
-
電車の急病のお客様の救護って...
-
落窪物語の現代語訳を教えて下さい
-
「ご移動ください」は正しい敬...
-
高速道路から一般道に下りる際...
-
教習所でマニュアル車のギアチ...
-
トンネル崩落「奇跡的」…28歳女...
-
駐車場での当て逃げは警察は捜...
-
車にボールが当たったかもしれ...
-
全くの無傷の当て逃げをしたこ...
-
車の下部を段差にぶつけてしま...
おすすめ情報