
お世話になります。勉強のために
リッチテキストボックスをひとつ作成し、プロパティ
のTextにマウスをやると入力欄が出ましたので
aaa
bbb
ccc
ddd
eee
fff
ggg
と改行しながら入力したら、リッチテキストボックス
に、意図したとおりに入力できているし
実行しても意図したとおりに文字が入っています。
一瞬これはいいぞ!と思いましたが
ただ、プロパティのTextの欄には
aaabbbcccdddeeefffgggと横長に
入っており、少し嫌な予感がしました。
まあスペースの関係でそうなってるのだろうと思いました。
次にバー(HScrollBar1)を作成し
0-6で可変。 ユーザーが行番号を指定する
目的です。
以下が、バーを操作した時に、行番号に対応した
配列要素が表示されるという目的のイベントです。
(TextBox1が表示先です)
Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Dim strVal
Dim aryStrings
strVal = RichTextBox1.Text
aryStrings = Split(strVal, "VbCr")
TextBox1.Text = aryStrings(HScrollBar1.Value)
End Sub
結果は、失敗でした。!!
試しに、RichTextBox1.Textのプロパティを手動で
aaaVbCr
bbbVbCr
cccVbCr
dddVbCr
eeeVbCr
fffVbCr
gggVbCr
と書き換えて実行すると、成功しました。
しかしこれでは、改行を自動的に認識していることになりません。
よく考えてみると、Split(strVal, "VbCr")のVbCrは
””で囲まれているので、単なる意味を持たない文字列のような気がします。
Split関数自体は成功ですが、
本来なら、Split(strVal, "VbCr")ではなく
Split(strVal, VbCr)でもって
改行位置で区切ってほしいのですが
"VbCr"で区切るのなら、"ほにゃ”で区切っても良いことに
なります。
お手数ですがどなたか素人向けに教えてください。
No.1ベストアンサー
- 回答日時:
こんにちは、
リッチテキストボックスに以下のように設定して、
aaaaa
bbb
sss
ddd
vbCrではなく
vbLfを利用して、
splitします。
Dim s() As String
s = Split(RichTextBox1.Text, vbLf)
sの配列に分割します。
配列の中身を出力すると
For i = LBound(s) To UBound(s)
Debug.Print(s(i))
Next
出力結果
aaaaa
bbb
sss
ddd
配列sの中身を結合すると
Debug.Print(Join(s, ""))
結果は、
aaaaabbbsssddd
になります。
分割する定数の問題だと思います。
環境は、visual basic 2005
vbLfを利用してsplitすればよかったのですね。おかげでやっと
解決しました。というかLBound(s) To UBound(s)の件はまだ
テストしてないのですが、配列の0から配列の要素数までみたいな
意味ですよね。あとで検索して調べてみたいと思います。
僕の環境ではDim i As Integer でFor i =0 to 5
Next で実験してイミジエトに出力が、うまくいきました。
正直言って、最初、フォームに出力されると思ってましたので
結構、気づくのに時間かかったんですが(^^)
どちらにしても肝心なことは解決できましたので
本当にありがとうございました!
No.2
- 回答日時:
Private Sub Command1_Click()
MsgBox CutStr(rtbTextBox.Text, vbCrLf, 2)
End Sub
これで 'bbb' が表示されました。
VB 6.0 Excel 2003 でのテストです。
Public Function CutStr(ByVal Text As String, ByVal Separator As String, ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
質問者が試みているのは、 CurStr関数と同じことですね。
ところで、
○ MsgBox CutStr(rtbTextBox.Text, vbCrLf, 2)
× MsgBox CutStr(rtbTextBox.Text, "vbCrLf", 2)
であることは判りますよね。
vbCrLf ---- 記号定数。
これを、文字列である "vbCrLf" とやった訳です。
[イミディエイト]
? CutStr("AAA vbCrLf BBB vbCrLf CCC", "vbCrLf", 1)
AAA
? CutStr("AAA vbCrLf BBB vbCrLf CCC", "vbCrLf", 2)
BBB
もちろん、この場合、文字列に区切り文字として "vbCrLf" を書き加えれば CutStr は成功します。
※単純に、記号定数にダブクォーテーションを付けるというチョンボをしているだけですね。
回答いただき本当にありがとうございました。
大変参考になりました。
また、
CurStr関数についても、解説いただきありがとうございました。
Split関数だけしか知らなかった(というか)これも知りたてのほやほや
なんですが、。それ以外にも色々あるものなんですね。
> vbCrLf ---- 記号定数。
> これを、文字列である "vbCrLf" とやった訳です
仰せのとおりです。(^^);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/20 14:46
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
vbsでテキストファイル内の文字...
-
VB 配列の内容をファイルに書...
-
PythonでLoopを使って配列内の...
-
VB.NET 2つの配列を連動して並...
-
VB6で配列を文字列に変換する方...
-
in_addrからchar型の文字列の変換
-
RichTextBoxの改行を認知してく...
-
C言語 exitの使い方
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
数字の位ごとの値を表示するプ...
-
整数xxxが大き過ぎますというエ...
-
足して100になるような乱数のア...
-
Excel-vba 文字列と変数を...
-
VBA シート上にドロップダウン...
-
世界のナベアツ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
COLUMN(1:1)の意味を教え...
-
数値を浮動小数点32bitHEXコー...
-
エクセルへのデータの貼付時に...
-
○桁にある数値を取得する VB.N...
-
VB6で配列を文字列に変換する方...
-
VBAで配列に文字列が入らない?
-
RichTextBoxの改行を認知してく...
-
copyRecordsetの数値16桁以上に...
-
【エクセル】 関数による電子...
-
複数ディレクトリの監視(VB.NET...
-
VBSで特定の文字列が含まれる場...
-
VB.NET 2つの配列を連動して並...
-
Javaのプログラムをルビー言語に。
-
VB 配列の内容をファイルに書...
-
ruby on railsのscaffoldで配列...
おすすめ情報