Word VBA質問箱 IV

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

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


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

【628】複数のフォーム対応 スーザン 09/5/5(火) 15:04 質問[未読]
【630】Re:複数のフォーム対応 りる 09/5/5(火) 20:27 回答[未読]
【631】Re:複数のフォーム対応 スーザン 09/5/6(水) 14:35 質問[未読]
【632】Re:複数のフォーム対応 りる 09/5/7(木) 7:43 発言[未読]
【633】Re:複数のフォーム対応 スーザン 09/5/7(木) 22:01 発言[未読]
【635】Re:複数のフォーム対応 りる 09/5/9(土) 9:53 発言[未読]
【636】Re:複数のフォーム対応 スーザン 09/5/10(日) 19:52 お礼[未読]

【628】複数のフォーム対応
質問  スーザン  - 09/5/5(火) 15:04 -

引用なし
パスワード
   フォームの転記方法を、すみさんの質問より拝見しました。
私も、参考にさせていただきましが、フォームが複数の場合は、どのようにしたらいいのでしょうか。

具体的に言いますと、フォームが複数あり、ワードのシートに転記したいのです。

フォームAの情報を、ワード上の7段目
フォームBの情報を、ワード上の8段目
フォームCの情報を、ワード上の9段目
フォームDの情報を、ワード上の10段目に、入力後、コマンドボタンをクリックして、ワード上にそれぞれ転記する。

このような方法を教えてください。

【630】Re:複数のフォーム対応
回答  りる  - 09/5/5(火) 20:27 -

引用なし
パスワード
   スーザン さん、こんばんわ。

>具体的に言いますと、フォームが複数あり、ワードのシートに転記したいのです。
>
>フォームAの情報を、ワード上の7段目
>フォームBの情報を、ワード上の8段目
>フォームCの情報を、ワード上の9段目
>フォームDの情報を、ワード上の10段目に、入力後、コマンドボタンをクリックして、ワード上にそれぞれ転記する。

内容からすると、マルチページで分岐したほうがよさそうですが、フォームが4つあるということでしょうか?
それぞれのフォームにCommandButton1とTextBox1があるとして(オブジェクト名が違う場合はそれに合わせてください)。

○FormAに。
Private Sub CommandButton1_Click()
  Test TextBox1.Text, 7, Me
End Sub

○FormBに。
Private Sub CommandButton1_Click()
  Test TextBox1.Text, 8, Me
End Sub

○FormCに。
Private Sub CommandButton1_Click()
  Test TextBox1.Text, 9, Me
End Sub

○FormDに。
Private Sub CommandButton1_Click()
  Test TextBox1.Text, 10, Me
End Sub

○標準モジュールを挿入して以下を記述。
Sub Test(arg1 As String, arg2 As Long, Optional arg3 As Object)
  'ドキュメントの先頭
  ActiveDocument.Range(Start:=0, End:=0).Select
  '3行目に移動(下に2つ移動)
  Selection.MoveDown wdLine, arg2 - 1, wdMove
  'そこに文字を挿入(選択範囲の拡張なし)
  With Selection
   .InsertBefore arg1
   .Collapse Direction:=wdCollapseEnd
  End With
  'フォームを閉じる
  If Not arg3 Is Nothing Then arg3.Hide
End Sub

A〜Cのボタンはフォームの切り替えで、Dだけ転記の場合は、
○FormAに。
Private Sub CommandButton1_Click()
  Me.Hide
  UserFormB.Show
End Sub

○FormBに。
Private Sub CommandButton1_Click()
  Me.Hide
  UserFormC.Show
End Sub

○FormCに。
Private Sub CommandButton1_Click()
  Me.Hide
  UserFormD.Show
End Sub

○FormDに。
Private Sub CommandButton1_Click()
  Test UserFormA.TextBox1.Text, 7
  Test UserFormB.TextBox1.Text, 8
  Test UserFormC.TextBox1.Text, 9
  Test Me.TextBox1.Text, 10, Me
End Sub

◎標準モジュールは上と同じ。

フォームを切り替えるよりもマルチページやフレームで対応するほうが簡単かもしれないですね。

【631】Re:複数のフォーム対応
質問  スーザン  - 09/5/6(水) 14:35 -

引用なし
パスワード
   りる さん、こんにちは。
昨日は、回答ありがとうございました。

実は、各フォームにボタンはなく、4つのフォームに1つのボタンなのです。
と言うのも、今住所宛名フォームを作成いており、4つの項目というのが、郵便番号、住所、方書、名前なのです。
そのフォームに、必要項目を入力後に、コマンドボタンをクリックすることにより、ワード上に転写される方法を考えています。

結構無謀な挑戦なんですけどね。

【632】Re:複数のフォーム対応
発言  りる  - 09/5/7(木) 7:43 -

引用なし
パスワード
   スーザン さん、おはようございます。


>と言うのも、今住所宛名フォームを作成いており、4つの項目というのが、郵便番号、住所、方書、名前なのです。
4つのフォームじゃなくて、ひとつのフォームにテキストボックスを4つ置いたほうが管理しやすそうですね。
Exitのタイミングで順番に表示していくのかな?

>そのフォームに、必要項目を入力後に、コマンドボタンをクリックすることにより、ワード上に転写される方法を考えています。

ということなので、

○ボタンのあるフォームに
Private Sub CommandButton1_Click()
  Test UserFormA.TextBox1.Text, 7 'UserForm名とTextBox名を合わせてください
  Test UserFormB.TextBox1.Text, 8 ’上に同じ
  Test UserFormC.TextBox1.Text, 9 ’上に同じ
  Test Me.TextBox1.Text, 10, Me  ’上に同じ
End Sub

○標準モジュールを挿入して以下を記述。
Sub Test(arg1 As String, arg2 As Long, Optional arg3 As Object)
  'ドキュメントの先頭
  ActiveDocument.Range(Start:=0, End:=0).Select
  '3行目に移動(下に2つ移動)
  Selection.MoveDown wdLine, arg2 - 1, wdMove
  'そこに文字を挿入(選択範囲の拡張なし)
  With Selection
   .InsertBefore arg1
   .Collapse Direction:=wdCollapseEnd
  End With
  'フォームを閉じる
  If Not arg3 Is Nothing Then arg3.Hide
End Sub

【633】Re:複数のフォーム対応
発言  スーザン  - 09/5/7(木) 22:01 -

引用なし
パスワード
   りるさん
真剣に考えてくれているのに、私の用量が悪くて申し訳ないです。
りるさんが言うように、1つのフォームに4つのテキストボックスがあり、また1つのコマンドボタンがあるのです。
誠に申し訳ありませんでした。

上記の内容の場合、どのような記述をしたらよいのでしょうか?

【635】Re:複数のフォーム対応
発言  りる  - 09/5/9(土) 9:53 -

引用なし
パスワード
   スーザン さん。おはようございます。

>りるさんが言うように、1つのフォームに4つのテキストボックスがあり、また1つのコマンドボタンがあるのです。

でしたら、これで。

○ボタンのあるフォームに
Private Sub CommandButton1_Click()
  Test TextBox1.Text, 7 ' 7行目に転記するテキストボックスのText
  Test TextBox2.Text, 8 ' 8行目     〃
  Test TextBox3.Text, 9 ' 9行目     〃
  Test TextBox4.Text, 10, Me  ' 10行目 〃
End Sub

○標準モジュールを挿入して以下を記述。
※前回書いたので省略。

【636】Re:複数のフォーム対応
お礼  スーザン  - 09/5/10(日) 19:52 -

引用なし
パスワード
   りるさん。
ありがとうございます。
思っていた通りの事ができました。
また、いろいろ教えてください。

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