重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

日本語に対して英訳を入力し正誤を判定するプログラムを作っています。
答えの英文(1文ずつ)を入力するテキストボックスを、単語数分だけコントロール配列で自動表示したいのですが、その際にテキストボックスを単語の文字数に適した大きさにするやり方がわかりません。
(例 I am a girl.が答えなら、テキストボックスを4つ表示し、
「I」に該当するテキストボックスは1文字分の大きさで表示)
英文から単語数、単語の文字数を計算する部分はだいたいわかりますが、親切な方がいらっしゃいましたらその部分もお願いいたします。
初心者なので簡単な質問かもしれませんが、宜しくお願いします。

A 回答 (2件)

Option Explicit



Dim Rdata As String
Dim Moj_A As String
Dim Dummy As Integer
Dim Mojsuu As Integer
Dim Sw As Integer
Dim Moj As String
Dim N As Integer
Dim my_Range As Integer

'
'これを テストするには、テキストボックスを6個 配列にして

'コマンドボタンを 1個 配置する必要が、あります。
'


Private Sub Command1_Click()
Mojsuu = Len(Rdata)
N = 0
Moj = Rdata
Dummy = 1
Sw = 1

Do
If Dummy = Mojsuu Then
N = N + 1
Moj_A = Mid(Rdata, Sw, Dummy - (Sw - 1))
Call Txit_c(Moj_A, N)
Exit Do
End If

If Moj = " " Then
If Sw = 1 Then
N = N + 1
Moj_A = Left(Rdata, Dummy - 2)
Sw = Dummy
Call Txit_c(Moj_A, N)
ElseIf Sw <> Mojsuu Then
N = N + 1
Moj_A = Mid(Rdata, Sw, Dummy - (Sw + 1))
Sw = Dummy
Call Txit_c(Moj_A, N)
End If

End If

Moj = Mid(Rdata, Dummy, 1)
Dummy = Dummy + 1

Loop

End Sub

Sub Txit_c(Moj_A As String, N As Integer)
my_Range = Len(Moj_A)

Form1.ScaleMode = vbCharacters

Text1(N - 1).Text = Moj_A
Text1(N - 1).Width = my_Range + 0.5 'my_Range + 1の 1 は、Widthのoffsetで 微調整(工夫)が必要です。

Form1.ScaleMode = vbPixels

For N = 0 To N - 1
Text1(N + 1).Left = Text1(N).Left + Text1(N).Width + 10 'Text Box間の間隔を設定 現在は、Offset=10
Next

End Sub


Private Sub Form_Load()
Rdata = "Antonio Pantoja, Domingo Cura & Jorga" ' TEST用文字列です。
End Sub
    • good
    • 0
この回答へのお礼

文字数計算の部分も教えて下さり、ありがとうございました。
一応自分で考えたのもあるのですが、ちゃんと動くかどうかまだ試していない状態です。
教えていただいたコードをよく理解してから試してみたいと思います。
ありがとうございました。

お礼日時:2007/04/22 21:49

テキストボックスの大きさを文字単位にしたいのであれば


テキストボックスのコンテナ(フォームやピクチャーボックス)のScaleModeプロパティを vbCharctersにしてから
テキストボックスの Widthプロパティを希望する文字数にします

サンプルコード
if Text1.count <> 4 then
 for n= 1 to 3
  Load Text1(n)
  Text1(n).visible = true
 next
end if

' 文字数の幅に合わせる
Form1.ScaleMode = vbCharcters
Text1(0).width = 1
Text1(1).WIdth = 2
Text1(2).Width = 1
Text1(3).Width = 5

' テキストボックスの位置あわせ
Form1.ScaleMode = vbPixels
for n=0 to 2
 Text1(n+1).left = Text1(n).left + Text1(n).Width + 8
next
といった具合です
    • good
    • 0
この回答へのお礼

とってもわかりやすい回答、ありがとうございました。
早速試してみます。
本当に初心者なので、試す→ちゃんとできるまで時間がかかるかもしれませんが・・・。
本当にありがとうございました。

お礼日時:2007/04/22 21:44

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