
日本語に対して英訳を入力し正誤を判定するプログラムを作っています。
答えの英文(1文ずつ)を入力するテキストボックスを、単語数分だけコントロール配列で自動表示したいのですが、その際にテキストボックスを単語の文字数に適した大きさにするやり方がわかりません。
(例 I am a girl.が答えなら、テキストボックスを4つ表示し、
「I」に該当するテキストボックスは1文字分の大きさで表示)
英文から単語数、単語の文字数を計算する部分はだいたいわかりますが、親切な方がいらっしゃいましたらその部分もお願いいたします。
初心者なので簡単な質問かもしれませんが、宜しくお願いします。
No.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
文字数計算の部分も教えて下さり、ありがとうございました。
一応自分で考えたのもあるのですが、ちゃんと動くかどうかまだ試していない状態です。
教えていただいたコードをよく理解してから試してみたいと思います。
ありがとうございました。
No.1
- 回答日時:
テキストボックスの大きさを文字単位にしたいのであれば
テキストボックスのコンテナ(フォームやピクチャーボックス)の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
といった具合です
とってもわかりやすい回答、ありがとうございました。
早速試してみます。
本当に初心者なので、試す→ちゃんとできるまで時間がかかるかもしれませんが・・・。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Excel(エクセル) Excel グラフの軸に「表示単位の変更」の要領でテキストを追加したい 1 2022/06/08 16:27
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- 英語 アルファベット順の4文字以上の英単語 10 2022/07/30 22:42
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
エクセルVBA チェックBoxと...
-
16進数
-
ユーザーフォームへのデータ入...
-
TextBoxの内容を右寄せ
-
アクセスできない保護レベルエ...
-
VB.NETのテキストボックスで、...
-
VBAで入力数値について
-
C言語のサフィックスについて
-
VB.NETでのイベントの途中終了
-
他のフォームから別のフォーム...
-
delphi
-
パーソナルXLSBのfuctionを呼び...
-
Can you text me your business...
-
IsNumeric 配列条件
-
VBA public変数はどのようなこ...
-
Functionの戻り値を配列にした...
-
タイムアウトする仕組みを作りたい
-
VB
-
C#のループでtextboxに値を入れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスできない保護レベルエ...
-
エクセルVBAでテキストボッ...
-
【VB.NET】テキストボックスに...
-
visual basic初心者です。 visu...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
VBAのユーザーフォームで、テキ...
-
コンボボックスからテキストボ...
-
VBでの入力値制限について
-
テキストボックスに大文字を
-
テキストボックスにカーソルを...
-
VBでローマ字入力とかな入力を...
-
年齢の計算について
-
ACCESS 除算での小数点切上げ方法
-
Excel ユーザーフォームで計算 ...
-
【C#】コンボボックスにおけるS...
-
VB2010 TextBoxの数字の表示...
-
VBAのフォーム カーソル移動
-
TextBoxの内容を右寄せ
-
VB2005テキストボックスへのコ...
おすすめ情報