« ベクターにテンプレート公開 | トップページ | Replace関数の例:右クリックでグーグルに活用してみた。 »

2009年10月25日 (日)

ユーザーフォームのテキストボックス内で改行文字列を取り出す(その3)

先日の「ユーザーフォームのテキストボックス内で
改行文字列を取り出す(その2)」のつづきです。

http://wordvba.cocolog-nifty.com/blog/2009/10/post-7d52.html

前回、テキストボックス内の文字列中の
改行記号(vbCrLf)を★●★に置換してから
.iniファイルに保存する方法を紹介しました。

今回は、前回と逆の作業の紹介です。

①.iniファイルに保存された文字列中の「★●★」を
「改行記号(vbCrLf)」に置換

②置換された文字列をテキストボックスに表示

上記①と②を実行するマクロです。

▼プログラム
Sub GetTextData()
       
      'データ取得用プログラム

      Dim strWord() As String '★●★で区切られた文字列
      Dim i As Integer
      Dim myData As String '.iniファイルから取得した文字列
      Dim myMessage As String 'テキストボックスに表示用文字列

10    On Error GoTo Errorhandler

      '.iniファイル(ファイル名.ini)から保存済みの文字列を取得
20    myData = System.PrivateProfileString("ファイル名.ini", _
               "textdata", 1)
               
      '取得した文字列が空の場合、vbNullStringとする
30    If Len(myData) = 0 Then
40        myMessage = vbNullString
50    Else
      '取得した文字列が空ではない場合、★●★を改行記号(vbCrLf)に置換する
          '①★●★にて、取得した文字列を分解
60        strWord() = Split(myData, "★●★")
         
          '②分解した文字列の間に改行(vbCrLf)を挿入
70        myMessage = strWord(0)
         
80        For i = 1 To UBound(strWord)
90            myMessage = myMessage & vbCrLf & strWord(i)
100       Next
         
110   End If

JN:

120   TextBox1.Value = myMessage
130   TextBox1.SetFocus

140      On Error GoTo 0
150      Exit Sub

Errorhandler:
         
          '取得した文字列に★●★がない場合
160       If Err = 9 Then
170           myMessage = myData
180           GoTo JN
190       Else
200           MsgBox "エラーが発生しました。終了します。"
210           End
220       End If
         
End Sub

▼プログラムの解説

10行、160行~220行
エラー処理です。
想定しているエラーは、取得した文字列に★●★が
含まれない場合です。

以前、このプログラムを作ったときには、このエラー処理は
必要だと思ったのですが、今実行すると、その必要性が
よくわかりません。。。

ひとまず、書いておいて問題は無いと思うので、そのままに
しました。いい加減で失礼します。

130行 
テキストボックスにフォーカス(カーソル)を移動

次回は、このシリーズの最終回(その4)です。

今までのプログラムをユーザーフォームに書き込んで
一つのプログラムとして作動するものを紹介します。

|

« ベクターにテンプレート公開 | トップページ | Replace関数の例:右クリックでグーグルに活用してみた。 »

マクロプログラム」カテゴリの記事

コメント

こんにちは。
60~100行の部分はReplaceを使うと簡単ですよ☆

例)
sub Replaceの例()
Dim s1 As String, s2 As String

s1 = "aaa" & vbCrLf & "bbb" & vbCrLf & "ccc"
MsgBox s1
s2 = Replace(s1, vbCrLf, "★●★")
MsgBox s2
End Sub

投稿: Konno | 2009年10月26日 (月) 12時33分

Konnoさん、
またまた、すてきなアドバイスをどうもありがとうございました。

Replace関数は初めて見ました。
これ便利ですねぇ。

そうですよね、こういうものがあるんですよね。

今まですごく不便に感じていたので、今後活用の余地ありです。

例文はわかりやすくてためになりました。
僕も何か新しい例文をつくって、今度紹介します。

投稿: 管理人 | 2009年10月26日 (月) 23時13分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/46576997

この記事へのトラックバック一覧です: ユーザーフォームのテキストボックス内で改行文字列を取り出す(その3):

« ベクターにテンプレート公開 | トップページ | Replace関数の例:右クリックでグーグルに活用してみた。 »