
No.2ベストアンサー
- 回答日時:
テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。
また、BackSpaceやDeleteキーで消されたときにも対応できません。
TAGOSAKU7さまのコードのように、内容が変更されたら、テキストファイルのすべてを書きなおすという方法をとるのが理想です。
しかし、この方法では内容が長くなってきたときに、1文字1文字入力するたびに、ディスクアクセスが発生することになり、文字を打っている人にストレスを与えてしまいます。
ということで最後に文字を入力してからおよそ3秒後にファイルを保存するという方法を紹介します。
○ フォームにテキストボックスを貼り付け、MultiLineプロパティをTrueにする。
○ フォームにタイマーコントロールを貼り付け、Intervalプロパティを1000にして、EnabledプロパティをFalseにする。
○ 次のコードをフォームのコードに貼り付ける。
Const TEST_FILE = "c:\test.txt"
Const N_SEC = 3
Private Sub Text1_Change()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Static Cnt As Long
Dim strText As String
Dim lngFile As Long
Cnt = Cnt + 1
If Cnt = N_SEC Then
Timer1.Enabled = False
Cnt = 0
Kill TEST_FILE
strText = Me.Text1.Text
lngFile = FreeFile
Open TEST_FILE For Binary Access Write As #lngFile
Put #lngFile, , strText
Close #lngFile
End If
End Sub
-------------------
ってな感じでどうでしょう。
真中ら辺はTAGOSAKU7さまのコピーです。
ちなみに
Const N_SEC = 3
の3を変えれば何秒後でもできます。
No.1
- 回答日時:
キーダウン、キープレスだと、マウス操作による変更が反応しません。
リアルタイムということなら、チェンジイベントを使用しましょう。
サンプルは、テキストボックスのMultiLineをTrueにして使用した方が、見栄えがいいかも?
Private Sub Text1_Change()
Const TEST_FILE = "c:\test.txt"
Dim strText As String
Dim lngFile As Long
strText = Me.Text1.Text
lngFile = FreeFile
Open TEST_FILE For Binary Access Write As #lngFile
Put #lngFile, , strText
Close #lngFile
End Sub
ありがとうございます!Text1_Changeって全然知りませんでした。なるほど、テキストを更新する度にそういうイベントが発生しているわけですね。試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- その他(Microsoft Office) パワーポイントやワード、エクセルでのスライドショーやテキストの微調整について 1 2023/01/12 05:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- UNIX・Linux linuxシェルスクリプト(baシェル)でファイルにかかれた数式を評価し計算する方法を教えてください 1 2022/08/26 14:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseのデバッグ中に変数の値...
-
ラベルの文字列の長さが変わっ...
-
ウォッチ式の文字数制限について
-
ラベルを表示したり非表示にし...
-
ACCESSのラベル内データに下線...
-
VB.NETでラベルの大きさってど...
-
VB6.0のWritePropertyとReadPro...
-
コマンドプロンプト
-
Excel VBA ユーザーフォーム内...
-
ExcelVBAのLISTBOXから複数行選...
-
ExcelVBA EnableプロパティがF...
-
Vba テキストボックス文字を右...
-
エクセルのVBAでコントロール配...
-
三菱タッチパネル小数点以下表...
-
エクセル 画像のプロパティで縦...
-
Labelのプロパティが変更できな...
-
ラベル内の文字(Caption)を縦...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ウォッチ式の文字数制限について
-
eclipseのデバッグ中に変数の値...
-
ラベルの文字列の長さが変わっ...
-
Vba テキストボックス文字を右...
-
ExcelVBA EnableプロパティがF...
-
VisualStudioのプロパティが表...
-
ラベルを表示したり非表示にし...
-
ラベルのスクロール(VB)
-
VB.NETでラベルの大きさってど...
-
Notepad++のコメントの色を変え...
-
Excel VBA ユーザーフォーム内...
-
三菱タッチパネル小数点以下表...
-
ラベル内の文字(Caption)を縦...
-
MATLABのグラフで軸目盛りのフ...
-
VBA:ユーザフォームのラベルの...
-
VB2005 TextBoxで高さを変更し...
-
C#初心者です。チェックボック...
-
スプレッドシートの列名変更の...
-
ACCESSのラベル内データに下線...
-
C# DataGridView特定セルの入力...
おすすめ情報