VB6で、テキストボックスを使ったツールを作ったのですが、起動して文字を入力していると、途中で急に入力した文字が消えてしまいます。
ただ入力を続けているだけなのに、何故でしょう?
文字数とかが関係しているのでしょうか?
そんなに文字数は入れてないんですが・・・。
どなたか教えてください!! お願いします!!

このQ&Aに関連する最新のQ&A

A 回答 (10件)

修正がある程度完了したら、またここに書いてみてください。


圧倒的に量が減っていると思います。

これからもサポートしていきたいと思いますので、あきらめずに続けてみてください。

>本を購入してきてその中のパターンを真似ているだけ
どの文がどういう動作をしているのかわからなかったら、本で調べるのもいいですし、ここで質問するのもいいでしょう。
ただし、質問する前にキーワードで検索したほうがいいです。


Stopステートメントのほかに、もう1つ便利なデバッグ方法。
ある行でF9を押してみましょう。
その行の色が変わります。
それから実行すると、その行に来ると必ず止まってくれます。

Text1.Text = .....

が書いてある行をすべてF9で色を変えてから実行し、止まったら、右辺(イコールの右の変数)にマウスポインタを当ててみましょう。
するとその変数の内容を表示してくれます。
    • good
    • 0
この回答へのお礼

こんにちは。色々と解説いただきありがとうございました。Stopステートメントは試してみましたが、次から次とストップしてしまい、結局原因の個所は特定できませんでした。とりあえず、ポイントがありますのでこの質問は締めさせていただきました。ほんとに参考になりました。ありがとうございました。日々疑問が出てくるので、また別の枠で質問をさせていただこうかと思います。その時はまたよろしくお願いしますね!お世話様でした。では。

お礼日時:2002/01/28 21:23

んんん。


これがフォーム上のコードすべてですか?

いろんなところに

If Text1.Text = "" Then Stop

を書いて、どの時点でテキストボックスのなかみが消えているか特定はできましたか?
このコードを見ても、名前が何のコントロールの名前なのか予測できないので、なんともいえません。

すみません、自信なくなってきました。

APIやカスタムコントロールを使っているので、いろいろ勉強なさっているとは思いますが、さすがにこれでは見やすいコードとはいえません。
コードを見やすく、無駄なく書き直せば、多少デバッグ効率が上がると思うのですが・・・。

○ ファイル名を作成する作業は何度も使うので、関数にしたほうがいい。

Function MakePathName(File As string) As String

MakePathName = App.Path + "\" + Replace(File, "/", "")

End Function

とか。

○ Weekday(startdate)を何度も呼び出すのは効率が悪いので、それを変数に入れてSelect Caseすればかなりコードが減る。

Dim Wd As Long, WdName

Wd = Weekday(startdate)

WdName = Array("日", "月", ・・・"土")
Form1.Label2.Caption = WdName(Wd)

Select Case Wd

Case 1

'赤にする文

Case 2 To 7

'黒にする文

End Select

ってな感じ。

○ Format(startdate, "mm/dd")もなんども呼び出してはダメ。

Dim Sd As String
Sd = Format(startdate, "mm/dd")

Select Case Sd

Case "01/01", "02/11",・・・"12/23"

'赤にする文

End Select

VBにはSelect Caseというほかの言語にはあまりない便利な分岐文があるので、利用しましょう。

○ Dimはサブルーチンの最初にまとめて書いたほうが良い○ Dimは,(コンマ)で1度に複数宣言できるので、同じような意味を持つ変数は同時に宣言

○ Timer1_Timerイベントにて、GetPrivateProfileStringに渡すファイル名やキー名は不変なので、フォーム内の(Declarations)で宣言し、Form_Loadで値を代入したほうがよい。

なんども同じ値を入力するのは無駄です。



なんだか、あまり関係ないことしか言ってませんが、他人に聞くときは、他人に見やすいコードを書くことも重要なのです。
    • good
    • 0
この回答へのお礼

丁寧な解説ありがとうございます。ほんとに色々なやり方があるんですね。私の場合は、勉強してるというよりも、色々な本を購入してきて、その中のパターンを真似ているだけなので、実際にはよく理解できていないんです。しかも、本では今自分が求めるコードがどれなのかもよく分かりませんし。誰かに説明していただくと、すごく参考になります。とりあえず書いていただいたものは全部試してみたいと思います!

お礼日時:2002/01/23 20:21

このプログラムでは何のイベントなのかわからないのですが、カレンダーの日付クリックイベントなのでしょうか。


Private Sub ~~~()から書いてほしかったです。

このイベントが、タイマーやキーイベントなどのリアルタイムなイベントでない限り、テキストボックスに文字を入力中に文字が勝手に消えてしまうということはありえません。
やはりPrivate Sub ~~~()の部分がわからないことにはどうにも・・・。
あと、貼り付けているコントロールやそのコントロールで発生するイベントなどを補足してくだされば、おそらく解決の糸口は見つかるかと思います。

このようにどの時点で不具合が起こっているかわからないようなときは、それを起しうるイベントが特定できなければ、解決のしようがありません。
いろんなところに

If Text1.Text = "" Then Stop

を書いておくのも手です。
こうすれば、テキストが空になった時点でコードが中断し、場所を特定できます。


ちなみに、プログラム上のアドバイスを。

App.Pathは通常 "C:\Temp" などの、最後に "\" を含んでいない文字を保持していますが、プログラムがルートにある場合は "C:\" などと最後に "\" が含まれています。
このため、App.Path + filename とすると、\がダブってしまう可能性もあるということです。
プログラムの腕が上達してきて、配布などを考えることがあれば、この点は無視できません。

また、同じフォーム上のコントロールを指定するのに、Form1.Text1 のように Form1 と指定するのはオススメできません。

この回答への補足

ありがとうございます。ツールの内容は以下のとおりです。
Option Explicit
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal naiyou As String, ByVal lpFileName As String) As Long
Private Sub clear_Click()
Form1.Label1.Caption = ""
Form1.Label2.Caption = ""
Form1.Text1.Text = ""
End Sub
Private Sub Command1_Click()
Dim out2 As String
Dim day As String
Dim filename As String
Dim henkan As String
Dim henkan2 As String
Dim ans As String
If Label1.Caption = "" Then
MsgBox "****************** ", vbCritical
Exit Sub
Else
If Text1.Text = "" Then
ans = MsgBox("******************", vbYesNo + vbQuestion
If ans = vbNo Then
Exit Sub
End If
End If
End If
henkan = Form1.Label1.Caption
henkan2 = Replace(henkan, "/", "")
filename = "\" & henkan2 & ".txt"
If Dir(App.Path & filename) = "" Then
out2 = Text1.Text
Open App.Path & filename For Output As #1
Print #1, out2
Close #1
Else
ans = MsgBox("******************", vbYesNo + vbQuestion
If ans = vbNo Then
Exit Sub
Else
Kill Dir(App.Path & filename)
out2 = Text1.Text
Open App.Path & filename For Output As #1
Print #1, out2
Close #1
End If
End If
End Sub
Private Sub copy_Click()
Clipboard.SetText Form1.Text1.SelText
End Sub
Private Sub cut_Click()
Clipboard.SetText Form1.Text1.SelText
Form1.Text1.SelText = ""
End Sub


Private Sub keep_Click()
Call Command1_Click
End Sub

Private Sub logon_Click()
optionman.Show
End Sub

Private Sub paste_Click()
Form1.Text1.SelText = Clipboard.GetText
End Sub
Private Sub fin_Click()
Unload Me
Unload myplan
End Sub
Private Sub monthview1_selchange(ByVal startdate As Date, _
ByVal enddate As Date, Cancel As Boolean)
Form1.Label1.Caption = startdate
If Weekday(startdate) = 1 Then
Form1.Label2.Caption = "日"
Form1.Label2.ForeColor = vbRed
Form1.Label1.ForeColor = vbRed
End If
If Weekday(startdate) = 2 Then
Form1.Label2.Caption = "月"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Weekday(startdate) = 3 Then
Form1.Label2.Caption = "火"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Weekday(startdate) = 4 Then
Form1.Label2.Caption = "水"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Weekday(startdate) = 5 Then
Form1.Label2.Caption = "木"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Weekday(startdate) = 6 Then
Form1.Label2.Caption = "金"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Weekday(startdate) = 7 Then
Form1.Label2.Caption = "土"
Form1.Label2.ForeColor = vbBlack
Form1.Label1.ForeColor = vbBlack
End If
If Format(startdate, "mm/dd") = "01/01" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "02/11" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "04/29" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "05/03" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "05/04" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "05/05" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "07/20" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "09/15" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "11/03" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "12/23" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "01/02" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
If Format(startdate, "mm/dd") = "01/03" Then
Form1.Label1.ForeColor = vbRed
Form1.Label2.ForeColor = vbRed
End If
Dim day As String
Dim filename As String
Dim henkan As String
Dim henkan2 As String
Dim readdata As String
Dim readend As String
Dim filename2 As String
henkan = Form1.Label1.Caption
henkan2 = Replace(henkan, "/", "")
filename = "\" & henkan2 & ".txt"
filename2 = "\" & henkan2 & ".dat"
If Dir(App.Path & filename) = "" Then
Form1.Text1.Text = ""
Else
Open App.Path & "\" & filename For Input As #1
Do Until EOF(1)
Line Input #1, day
readdata = readdata & day & vbCrLf
Loop
readend = Replace(readdata, "", "")
Close #1
Form1.Text1.Text = readend
End If
End Sub
Private Sub plan_Click()
myplan.Show
If Form1.Label1.Caption = "" Then
MsgBox "******************", vbExclamation
Unload myplan
Else
myplan.Label1.Caption = "20" & Form1.Label1.Caption & " (" & Form1.Label2.Caption & ")"
End If
End Sub

Private Sub Timer1_Timer()
Dim filename As String
Dim henkan As String
Dim henkan2 As String
Dim filename2 As String
henkan = Form1.Label1.Caption
henkan2 = Replace(henkan, "/", "")
filename2 = "\" & henkan2 & ".dat"
If App.Path & filename2 = "" Then
Form1.Label6.Caption = ""
Else
Dim strFileName As String
Dim strSectionName As String
Dim strKeyName As String
Dim strValue As String * 1024
Dim lngStrLength As Long
Dim lngResult As Long
strFileName = App.Path & filename2
strSectionName = "nikki"
strKeyName = "plantext"
lngStrLength = Len(strValue)
lngResult = _
GetPrivateProfileString( _
strSectionName, _
strKeyName, _
"", _
strValue, _
lngStrLength, _
strFileName)
Form1.Label6.Caption = _
Left(strValue, _
InStr(strValue, _
vbNullChar) - 1)
End If
Form1.Label6.Left = Form1.Label6.Left - 50
If Form1.Label6.Left + Form1.Label6.Width < 0 Then
Form1.Label6.Left = Form1.Label6.Width
End If
End Sub

Private Sub version2_Click()
Version.Show
End Sub
カレンダーの日付をクリックして、ラベルに日付を表示→テキストの内容を書いて、最後に「保存」専用ボタンを押す→yymmdd.txtに内容をセーブする→保存した日付をクリックすると、その日付のyymmdd.txtを読み込んでテキストボックスに表示する というものです。
あと、予定登録に文字を入れると、ファイルにセーブして、画面下のラベルを文字が流れて表示されるというのもあります。
こんなんでお分かりいただけるでしょうか。見当違いだったらごめんなさい!!!

補足日時:2002/01/22 21:06
    • good
    • 0

>If Dir(App.Path & filename) = "" Then


>Form1.Text1.Text = ""
>Else
の部分なんですけど、ファイル名が見つからなかったらテキストボックスの内容をクリアするってことですよね。
最初このファイルは存在するのでしょうか?
ファイルが存在しない場合実行しても結果はずっと同じですよ。
あらかじめApp.Pathの場所にそのファイルがあれば別ですが。
まず、if~の前に
Open App.Path & "\" & filename For Append As #1
Close #1
で空のテキストファイルを作ってみては?

この回答への補足

私の説明が至りませんでした。テキストボックスの内容をテキストファイルにセーブするようにしているので、最初は
If Dir(App.Path & filename) = "" Then
Form1.Text1.Text = ""
としないと、ファイルが存在しないということでエラーになるんです。
一度セーブすれば、次に対象の日付をカレンダーからクリックすると、その日付のファイルを読み込んでテキストボックスに表示するようにしています。

補足日時:2002/01/22 21:18
    • good
    • 0

文字が消えてしまうというのは、すべてですか?



これ以降の文は対象がText1であると仮定します。
編集メニューの検索で

"Text1.Text = "

という文字列を検索して、その付近のコードを調べてみましょう。

あと、Text1_Changeイベントに変なコードが入っていませんか?

消える文字が1文字とか数文字なら、KeyPress、KeyDown、KeyUpイベントも怪しいです。

>テキストボックスを使ったツール
できれば何をするツールなのか知りたいです。

ちなみにほかの方が語ってらっしゃる

Do Events

という文は

DoEvents

の間違いです。
単語を離してはいけません。

この回答への補足

文字が消えるのは、それまでにテキストボックスに入力した文全てです。ちなみに、ツールというのは日記帳です。
カレンダーの日付をクリックして、ラベルに日付を入れ、テキストボックスに内容を記入→保存ボタンで保存すると、次からはその日付をクリックするとテキストファイルを読み込んでテキストボックスに内容が表示される というものです。
一番怪しいのは、この辺りだと思うのですが。

Dim day As String
Dim filename As String
Dim henkan As String
Dim henkan2 As String
Dim readdata As String
Dim readend As String
Dim filename2 As String
henkan = Form1.Label1.Caption
henkan2 = Replace(henkan, "/", "")
filename = "\" & henkan2 & ".txt"
filename2 = "\" & henkan2 & ".dat"
If Dir(App.Path & filename) = "" Then
Form1.Text1.Text = ""
Else
Open App.Path & "\" & filename For Input As #1
Do Until EOF(1)
Line Input #1, day
readdata = readdata & day & vbCrLf
Loop
readend = Replace(readdata, "", "")
Close #1
Form1.Text1.Text = readend
End If
End Sub

ちょっと変な感じですが、なにぶん初心者なもので・・・。
KeyPress、KeyDown、KeyUpイベントは使っていません。
それと、Text1_Changeイベントというのはどこにもないんですが、どういうものなんでしょうか?

補足日時:2002/01/21 21:14
    • good
    • 0

半角文字が1バイト、全角文字が2バイトです。


キロバイトはバイトの1024倍ですから、32キロバイトだと
半角32768文字位、全角16384文字位ということですか。

この回答への補足

全角16384文字というのは、かなりの文字数ですよねぇ。とてもではないですが、そんな文字数は入力していません。1000文字とか2000文字くらいのレベルですから。

補足日時:2002/01/20 17:30
    • good
    • 0

「Do Events」をお分かりでないようなのでこの関数は使われていないようですね。

Do~Loop内ではないようです。

TextBoxのプロパティMultiLineがTrueになってませんか?
TrueになっているとTextBoxの端で改行されて入力した文字は上にいって隠れてしまう状態になります。消えているわけではありませんが・・・・

この回答への補足

MultiLineはtrueにしています。で、スクロールバーを縦横両方に付けています。画面の上にいったのではなく、いくら見ても消えているんです。前にも同じようなテキストボックスを使用したツールを使った時に、入力中に急に消えてしまったことがあったので、何かの設定で、よくあることかと思っていましたが、そうでもないようですね。

補足日時:2002/01/20 16:46
    • good
    • 0

TextBoxはMultiLinがFalseのときに半角で2048文字、


Trueのときで約32kバイトまでという制限がありますが・・・

この回答への補足

32kというのは実際にはどれくらいの文字数なのでしょうねぇ?そんなには文字を入れていないんです。

補足日時:2002/01/20 16:51
    • good
    • 0

テキストボックス(たとえばText1)に、代入しているようなところをチェックしなおして見てはどうでしょう?

    • good
    • 0

プログラム中Do Eventsなどでテキストボックスの内容をクリアするような記述はありませんか?

この回答への補足

早速ご回答いただき、ありがとうございます。
テキストボックスでは、Open ~ For Input As で一度保存した
テキストファイルをDo Until ~ Loopでテキストファイルの最終行まで
読み込んで、テキストボックスに表示するというコードを書いてます。
Doを使ってるのはここだけです。
保存前の全くのプランク状態からテキストボックスに文を入力している
途中で急に消えてしまうので、これは関係なさそうです。
うぅ~ん、分かりません。
やっぱりDoが関係しているんでしょうか?

補足日時:2002/01/20 03:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWordのテキストボックスの行間をつめたいのです

Wordのテキストボックスの行間をつめたいのです。

他者からもらった印刷物がありますが、
文字の高さが3.3mmで行間が3.6mm程度です。
Wordでやろうとしていますがなかなかできません。
テキストボックスの中に文字を入れればテキストボックスの上との行間が縮まりますが
テクストボックス内の行間が縮まりません。
どうしたらできますか?

Aベストアンサー

こんばんは!
↓の画像でテキストボックス内の行間を12ptでやってみました。
当方使用のWord2003の場合です。

左側のテキストボックスはデフォルト(ページ設定)の1行の行間そのままです。

(1)テキストボックス内の文字を範囲指定 → メニュー → 書式 → 段落
(2)「インデントと行間隔」タブ → 間隔の「行間」の下向き▼を選択 → 「固定値」を選択(自動で12ptになると思います)
このポイント数で好みの行間に設定できます。

※ 行間とは文字の上端~次の行の文字の上端までですので、行ピッチと言った方が判りやすいかもしれません。

すなわち、フォントサイズよりも小さいpt数を設定してしまうと文字が重なってしまいます。

以上、参考になれば良いのですが
的外れならごめんなさいね。m(_ _)m

Q特定の文字を、入力文字数に含めない方法は(VB.NET)

VB.NETにて特定の文字を、入力文字数に含めないようにするにはどのような処理を行ったらよいのでしょうか?
以下は実際に試みた方法です。「型 'TextBox' でパブリック メンバ 'TextLength' が見つかりません。」というエラーがおきました。

Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox.KeyPress

'マイナスかドットであるか判定
If e.KeyChar = "-" OrElse e.KeyChar = "." Then
sender.TextLength = sender.TextLength - 1
End If

End Sub

Aベストアンサー

そのような特殊な方式でしたら入力されたものの文字数をカウントする(けど特殊文字は除く)クラスを新たに作るとか、MaxLengthを修正しするとかで自分でクラスを作りなおすしかないでしょう。

ただ目的はカウントをされなくするのではなく、特殊文字を除いた最大入力文字数の制限なんですよね? それだけなら大げさに作りこむことは無いと思うので、文字数のカウントを確認ボタンが押された時に行うとか(これならその時点のテキストボックスの文字数をカウントして特定文字が入っていたらマイナスするだけ済みます)、キーイベントで見張るならキーイベントが発生する度に毎回特殊文字を除いた文字数をカウントするとかの処理で間に合うかと思います。

特殊文字を除いた文字数のカウントは色々な方法がありそうですが、例えば入力文字列からreplaceで特定文字を置き換えてカウントするとか、一文字ずつチェックするとかでしょうかね。

Qエクセル2002/テキストボックス内の文章の行間?

エクセル2002です。
テキストボックス内に書いた文章の行間を任意に変えることが可能ですか?

普通に書くとくっつきつぎで、一行あけると開きすぎなので、一行の半分くらいの行間にしたいのです。
テキストボックスの書式設定は見てみましたが、方法を見つけられませんでした。

Aベストアンサー

あまり良い方法と言えないかもしれませんが。

テキストボックス内に文字を入力します。
そしてテキストボックスの書式設定を出して、配置のタブを開きます。
文字の配置の縦位置を「均等割付」に設定します。
これでテキストボックスの縦の高さに合わせて、行間が広がります。
ちょうど良い行間にテキストボックスの高さを調節します。

QVB.NETのテキストボックスで、カーソル位置に文字を入れたいのですが、どうすればいいのでしょうか

VB.NET作っています。
System.Web.UIWebControls.TextBoxで、
ボタンを押すとテキストボックスのカーソル位置に文字列を入れたいのですが、どうやってやればいいのでしょうか?
おしえてくださいーー

Aベストアンサー

> ユーザのブラウザで動作しなければ、できないのおでしょうか。Javaスクリプトは使ったことがなく厳しいです

こればっかりはねぇ。
1. ボタンを押す。
2. テキストボックスに文字を挿入する。
3. テキストボックスに文字が挿入された結果をユーザーが目にする。

ASP.NET ですので、この流れの間に無理矢理サーバへの通信を入れることはできます。ASP.NET で言うところの「ポストバック」ってやつですね。
にしても、サーバ側で「テキストボックス上のカーソルの位置」を何らかの形で取得しなくてはいけません。

サーバ側ではテキストボックスの値は取得できますが、テキストボックスからカーソルの位置を取得することはできませんので「別の何か」に格納されている値として取得するしかありません。
では、「別の何か」にカーソルの位置を仕込んでおくのは誰がやらなきゃならないかというと、ユーザー側(ブラウザ上)で動作する Java Script ということになります。
テキストボックス上でマウスのボタンが押し上げられた時や、キーボードのキーが押し上げられた時に、ブラウザ上の別の隠しコントロールにカーソルの位置を数値で仕込むなどの動作が必要です。

先のサンプルのソースコードをよく見ると、テキストボックスの onmouseup や onkeyup イベントで pos() という Java Script の関数を呼び出しています。
ここでやっていることは n という変数に「テキストボックスに入っている文字列の右端から何文字目にカーソルがあるか」を格納しています。
これを利用し、n という変数ではなくて、非表示テキストボックスなどにでもカーソルの位置を仕込んでおけば、ボタンを押してポストバックが起こった時にサーバ側で「カーソルの位置」を非表示テキストボックスの値で取得することができます。

> ユーザのブラウザで動作しなければ、できないのおでしょうか。Javaスクリプトは使ったことがなく厳しいです

こればっかりはねぇ。
1. ボタンを押す。
2. テキストボックスに文字を挿入する。
3. テキストボックスに文字が挿入された結果をユーザーが目にする。

ASP.NET ですので、この流れの間に無理矢理サーバへの通信を入れることはできます。ASP.NET で言うところの「ポストバック」ってやつですね。
にしても、サーバ側で「テキストボックス上のカーソルの位置」を何らかの形で取得しなくてはいけ...続きを読む

Qパワポのテキストボックスの行間のデフォルト値の設定

パワポ2000を使っています。
テキストボックスを作ると必ず行間が9.99行となっているので、毎回1行に変更しています。作った時点に1行になるように、変更する方法がわかりません。
つまり、パワポのテキストボックスの行間のデフォルトを、現在の9.99行から1行に変更したらよいのですが、変更する方法がわかりません。

Aベストアンサー

行間を1行にしたテキストボックスを選択し、右クリックで「オートシェープの規定値」選択すると次からのテキストボックスは開業行になりませんか?

QASP.NET(VB2005)■ WEBページのテキストボックスへ入力するとき、文字列を2桁入力するごとにハイフンを表示させたい

ユーザーがWEBページのテキストボックスへ入力するとき、
文字列を2桁入力するごとにハイフンを表示させ、その状態を維持したまま
次に文字列を入力させることは可能でしょうか?

例.
1.ユーザーが「01」と入力
2.ハイフンが表示され、テキストボックスの表示は「01-」となる
3.続けてユーザーが「02」と入力
4.ハイフンが表示され、テキストボックスの表示は「01-02-」となる

この流れで「01-02-AB-CD-E5-F5」とテキストボックスに表示される結果にしたいのです。
その後、テキストボックス文字列をデータベースに取得させます。
(因みに上記英数字はあくまでも例です)

開発環境は以下です。
 ・WinXP SP2
 ・Microsoft Visual Studio 2005(VB2005)
 ・ブラウザはIE6のみを前提としています。
 
いつも質問ばかりで申し訳ございませんが、
もしご存知の方がいらっしゃいましたらどうぞご教授をお願いします。
ヒントになるようなことや参考になるWEBサイトでもアドバイス頂けると嬉しいです。

現場開発経験約3ヶ月ほどなのでわかりやすく説明下さるとなお有難いです。<(_ _)>

ユーザーがWEBページのテキストボックスへ入力するとき、
文字列を2桁入力するごとにハイフンを表示させ、その状態を維持したまま
次に文字列を入力させることは可能でしょうか?

例.
1.ユーザーが「01」と入力
2.ハイフンが表示され、テキストボックスの表示は「01-」となる
3.続けてユーザーが「02」と入力
4.ハイフンが表示され、テキストボックスの表示は「01-02-」となる

この流れで「01-02-AB-CD-E5-F5」とテキストボックスに表示される結果にしたいのです。
その後、...続きを読む

Aベストアンサー

クライアントスクリプトを仕込まないといけないでしょう
<script type="text/javascript">
<!--
function myInsert()
{
  var ss = this.value;
  if ( ss.length % 3 = 0 && ss.length > 0 )
  {
    this.value = ss.substring(0,ss.length-1) +
     '-' + ss.substring(ss.length-1,ss.length);
  }
}
//-->
</script>
といったスクリプトを埋め込んでおきます

Page_Loadイベントなどで
dim cs as ClientScriptManagr = Page.ClientScript
dim s as string
s = "window.onlooad = function() { docuemnt.getElementById('TextBox1').onkeyup = myInsert; }"
if cs.IsIsClientScriptBlockRegistered("myInsert") = False Then
  cs.RegisterClientScriptBlock(Me.GetType(), "myInsert", s)
End if

クライアントスクリプトを仕込まないといけないでしょう
<script type="text/javascript">
<!--
function myInsert()
{
  var ss = this.value;
  if ( ss.length % 3 = 0 && ss.length > 0 )
  {
    this.value = ss.substring(0,ss.length-1) +
     '-' + ss.substring(ss.length-1,ss.length);
  }
}
//-->
</script>
といったスクリプトを埋め込んでおきます

Page_Loadイベントなどで
dim cs as ClientScriptManagr = Page.ClientScript
dim s as string
s = "window...続きを読む

Qテキストボックス内の行間の変え方

Microsoft Wordでテキストボックス内の行間を変えるにはどうしたらよいですか。
文字サイズを大きくすると、伴って行間も広くなってしまうのですが、行間だけを指定することができるでしょうか。教えて下さい。

Aベストアンサー

テキストボックス内のテキストを選択して右クリック
「段落」を選択してください。
行間の変更ができます。

Qテキストボックスで数値入力制限

数値しか入力できないようにしているテキストボックスがあります。が、どこを見てもそんな処理は入ってないように見えるんです。
マスクではなくテキストボックスでです。
キープレスでもゴットフォーカスにもそんなロジックはありませんでした。
プロパティには存在しないと思っています。
ソースがあるのにどこに書いてるかわからないというバカぶりですが、どなたかアドバイスお願いします。

Aベストアンサー

Win32APIのSetWindowLong(GetWindowLongも併用)でウィンドウスタイルを変更することで、数字入力専用のテキストボックスに変更できるそうです。
GetWindowLongで得たウィンドウスタイルにES_NUMBER(&H2000)を付加して、SetWindowLongを利用してウィンドウスタイルを変更する方法です。
このコードがどこかで使用されていませんか?

QPPTのVBA 全てのテキストボックスの行間を最小

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また上記操作を自動記録しようといたしましても記入されません。
(PPT2007には自動記録が無いため、excel、wordでトライいたしましたが、無理でございました。。。)

一個のテキストボックスの操作方法さえ分かれば後は、
For each スライド
  For each テキストボックス
  :
  :
  Next
Next
みたいな感じで出来ると思うのでございますが。。

 もしお詳しい方がいらっしゃいましたら,お教えいただけないでしょうか。
どうぞよろしくお願いいたします。

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また...続きを読む

Aベストアンサー

MKT_さん
こんにちは。

下記のコードでできると思います。
※PPT2003での対応ですが…

Sub 行間変更()
 Dim I  As Long
 Dim J  As Long
 For I = 1 To ActivePresentation.Slides.Count
  With ActivePresentation.Slides(I)
   For J = 1 To .Shapes.Count
    If .Shapes(J).HasTextFrame = msoTrue Then
     .Shapes(J).TextFrame.TextRange.ParagraphFormat.SpaceBefore = 0
    End If
   Next J
  End With
 Next I
End Sub

QVB2008でのテキストボックスからCSVへの入力について

はじめまして、VB2008初心者です。
テキストボックスで入力した長文(改行含む)をcsvの形式で保存するというプログラムを作っています。

今は、改行したところでセルを一行改行してしまいます。
そこで、テキストボックスの内容を代入したaという変数を改行も正確に1つのセル中に収めて保存したいです。つまりエクセルでAlt+Enterをしたときと同じように改行したいです。

あちこち、過去スレも検索したのですがうまくいきません。
↓今自分なりに考えてこの状態です。
a = a.Replace(vbCrLf, "\")
a = a.Replace("\", Chr(10))

何とか助けていただけませんでしょうか。

使ってるソフト:VB2008Express Edition
チェック済みのHP:
◆http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q147176499
◆http://www.accessclub.jp/bbs3/0008/superbeg3570.html

はじめまして、VB2008初心者です。
テキストボックスで入力した長文(改行含む)をcsvの形式で保存するというプログラムを作っています。

今は、改行したところでセルを一行改行してしまいます。
そこで、テキストボックスの内容を代入したaという変数を改行も正確に1つのセル中に収めて保存したいです。つまりエクセルでAlt+Enterをしたときと同じように改行したいです。

あちこち、過去スレも検索したのですがうまくいきません。
↓今自分なりに考えてこの状態です。
a = a.Replace(vbCrLf, "...続きを読む

Aベストアンサー

改行を含めたいのであれば その項目のCRLFをLFに変更して『"』(2重引用符)で括る必要があります

a = String.Format( """{0}""", a.Replace( vbCrLf, vbLF ) )
といった具合で項目を組み立て出力しましょう


人気Q&Aランキング

おすすめ情報