F_test に、非連結のテキストボックスがあります。
txt子テキスト_1
txt子テキスト_2
txt子テキスト_3
txt子テキスト_4
txt子テキスト_5
この非連結の値を、
F_test2のtxtテキスト_1へ転記したいのです。
ub 転記()
For i = 1 To 5
Forms![F_test2]![txtテキスト_1] = Me.Controls("txt子テキスト_" & i) & vbNewLine
Next i
End Sub
上記のコードを記載しました。
F_test2のtxtテキスト_1には、
C005のみが表示さます。
改行しても上手くできないです。
プログラミングにおける
と
の違いわかりますか?
回答ありがとうございます。
x= 1 は、そのままで
x=x+1は、x=2だと思います。
まちがっていますか?
まぁそうですね。より正確には「
x = x + 1
」は「xに1を加えた値でxを上書きする」となりますでは、
と、
ではどうなるでしょうか?
質問のコードを見直してみましょう
これは、実際にコードが実行される場合
が実行されることになります。これでは一番最後の「
"C005" & vbNewLine
で上書きする」が最終結果として残るのみです「追記(元の値を残した上でさらに書き込む)」には、「
(元の値)
と(転記する値) & vbNewLine
を連結して上書きする」ようにする必要があります回答ありがとうございます。
元の値とは、C001で、転記する値とは、C002で、この2つを連結して上書きするということでしょうか?
「(元の値)」や「(転記する値)」は説明のための抽象的な内容であり、実際にはコードの実行に合わせて適宜置き換えられますので、特別に「C001」や「C002」と言えるものではありません。(特定の場合にはそうなることもあるでしょう)
改めて説明しなおしますが、
は、コードの実行時には
投稿が中途半端になってしまったので>> 5は無視してください
(hatenaさんへ、削除お願いします)
(中途半端に投稿されてしまったので再投稿します)
「(元の値)」や「(転記する値)」は説明のための抽象的な内容であり、実際にはコードの実行に合わせて適宜置き換えられますので、特別に「C001」や「C002」と言えるものではありません。(特定の場合にはそうなることもあるでしょう)
改めて説明しなおしますが、
は、コード実行時には
が実行されます。すでに述べたようにこの結果は
だけしか意味を成しません
質問の(画像にあるような)結果を出したいのであれば
このような処理になる記述が必要です
教えていただいた、処理方法と違うかもしれませんが、
実現することは、一応できます。
ただ、テキストボックスの最後に数字が連続しているので、ループまたは、カウントアップで出来ないかなと思いました。
https://zawazawa.jp/ms-access/topic/876
このトピで、hatena様から、改行コードを入れることで、転記ができたので、安直に、転記できると思いました。
ただ、hiroton様が、初めにカウントアップのことを記載したということは、カウントアップでコードを短くできるのでしょうか?
現状のコードをhirotonさんの回答あった「(元の値)と(転記する値) & vbNewLineを連結して上書きする」というヒントを元に書き換えると、下記になります。
これを質問の最初のコードのForループと同じ考え方で書き換えればいいでしょう。
こういうことだったのですね。
hiroton様
hatena様
ご丁寧にありがとうございました。
そのコードでも結果は同じになりますが、memoをテキストボックスの代入するのは最後に1回のみでいいので、ループ内で繰り返すのは無駄ですね。
hatena様
ご丁寧にありがとうございました。
ループ処理はループ内のコードをそのまま繰り返します
hatenaさんも指摘していることですが、ループの最後で上書きするような処理はループ内に含める必要は薄いです。質問のコードも
は
Forms![F_test2]![txtテキスト_1] = Me.Controls("txt子テキスト_" & 5)
と何ら変わらないので意味のない(≒ダメな)コードです。hirotonの伝わらない回答もそんな感じのことを言っていました
ループ処理を使うときは「イニシャル部」「メイン部」「エンド部」(前処理、メイン処理、後処理)を考えるようにすると良いです
「最終的にやりたいこと」と「ループ処理させたら楽そうな部分」を明確にすることですね
以下、いくつか同様のことを成すコードを記述してみます
無駄な記述はしないというのがプログラミングの基本ではありますが、
「目的が達成されない」や「エラーが出る」などの不正解は簡単な話ですが、善し悪しを語るのはなかなかに難しい話ですね
hiroton様
返信が遅れて申し訳ありません。
ご丁寧にありがとうございました。