Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


149 / 308 ツリー ←次へ | 前へ→

【452】フォームで入力したものを文章中の単語と置換え方 ケント 06/7/2(日) 5:52 質問[未読]
【453】Re:フォームで入力したものを文章中の単語... H. C. Shinopy 06/7/3(月) 8:24 回答[未読]
【454】Re:追加 H. C. Shinopy 06/7/3(月) 8:39 回答[未読]
【455】Re:追加 ケント 06/7/3(月) 11:31 お礼[未読]

【452】フォームで入力したものを文章中の単語と置...
質問  ケント  - 06/7/2(日) 5:52 -

引用なし
パスワード
   こんにちは、数日前にVBAを始めたケントと申します。
質問よろしいでしょうか。

フォームであつめた単語を、ワード文章内の単語に置き換える方法が思いつきません。たとえばテキストボックスで名前を入力させ、それを文章内の「{名前}」という単語と置き換えたいです。
加えて、未入力のボックスがある状態で「入力終了」ボタンを押した場合「未入力エラー」を表示する方法も解る方教えてください。


現在の段階はフォームに10個のテキストボックスと1個の入力終了ボタンをデザインしたところで止まっています。
基礎的なものだと思うので申し訳ないのですが、現在海外で日本語の参考書が手に入らずに苦心しています。知っている方ご指導よろしくお願いします。

【453】Re:フォームで入力したものを文章中の単語...
回答  H. C. Shinopy  - 06/7/3(月) 8:24 -

引用なし
パスワード
   テキストボックスと入力終了ボタンを作ったということですので、
入力終了ボタンに下のマクロを書き込めばでき上がりです。
名前・住所…があるという想像で、下のマクロとなりました。

Private Sub CommandButton1_Click()
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Rem 入力終了ボタン クリック時
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
 Rem テキストボックスの入力チェック
 Select Case True
  Case TextBox1.Text = ""
   MsgBox "名前が未入力です。"
   Exit Sub
   Case TextBox2.Text = ""
   MsgBox "住所が未入力です。"
   Exit Sub
 End Select
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
 Rem 文書の先頭にカーソルを置く。
 Selection.HomeKey unit:=wdStory, Extend:=wdMove
 '
 Rem ワイルドカードによる文字列検索の設定
 With Selection.Find
  .ClearFormatting
  .Replacement.ClearFormatting
  .Text = "\{" & "*" & "\}" ' 「{*}」を指定
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = True
  Rem 検索・置換の実行
  Do While Selection.Find.Execute
   With Selection.Range
    Select Case .Text
     Case "{名前}"
      .Characters.Parent.Text = TextBox1.Text ' テキストボックス:名前
      Selection.MoveRight unit:=wdCharacter, Count:=.Characters.Count, Extend:=wdMove
      .SetRange Selection.End, Selection.End
     Case "{住所}"
      .Characters.Parent.Text = TextBox2.Text ' テキストボックス:住所
      Selection.MoveRight unit:=wdCharacter, Count:=.Characters.Count, Extend:=wdMove
      .SetRange Selection.End, Selection.End
    End Select
   End With
  Loop
 End With
End Sub ' CommandButton1_Click() *----*----*  *----*----*  *----*----*  *----*----*

後は「閉じる」ボタンを作るだけです。
Private Sub CommandButton2_Click()
 Unload UserForm1
End Sub ' CommandButton2_Click() *----*----*  *----*----*  *----*----*  *----*----*

【454】Re:追加
回答  H. C. Shinopy  - 06/7/3(月) 8:39 -

引用なし
パスワード
   すみません。
ちょっと修正。

入力チェックの箇所で
〜.SetFocus(カーソル移動)を追加して下さい.。

ユーザーフォームを長いこと使ってなかったので、
大事なノウハウを忘れておりました。

Rem 入力チェック
 Select Case True
  Case TextBox1.Text = ""
   MsgBox "名前が未入力です。"
   TextBox1.SetFocus
   Exit Sub
   Case TextBox2.Text = ""
   MsgBox "住所が未入力です。"
   TextBox2.SetFocus
   Exit Sub
 End Select

【455】Re:追加
お礼  ケント  - 06/7/3(月) 11:31 -

引用なし
パスワード
   H. C. Shinopy さんへ

ありがとうございます!
大変詳しい回答というかすべて記述していただいて感謝感激です。まだ書いて頂いたコードをひとつひとつ調べ理解しながら読んでおります。自分で想像していたものよりもずっと長いので、一人では到底完成できなかったと思います。。。
入力の項目が10個ほどあるのでがんばって書き足してやってみます。

本当にありがとうございました。
ケント

149 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207137
(SS)C-BOARD v3.8 is Free