• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA ユーザーフォームの内容を別ブックに反映)

VBAユーザーフォームの内容を別ブックに反映

このQ&Aのポイント
  • VBAユーザーフォームで入力した内容を別ブックのシートに反映させる方法について説明します。
  • 使用するアプリケーションはExcel 2013です。
  • 具体的な手順や注意点についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは オプションボタンの選択値とは何ですか? キャプションか番号か? Private Sub 確定保存_Click()   Dim tBk As Workbook   Dim p As String   Dim tSh As Worksheet   Dim i As Long   Dim j As Long   Dim v As Boolean   If Me.TextBox1 = "" Then     MsgBox "テキスト 無し"     Exit Sub   Else     v = False     For i = 1 To 3 'オプションが連番になっているとして、最終番号まで       If Me.Controls("OptionButton" & i).Value = True Then         v = True         Exit For       End If     Next     If v = False Then       MsgBox "オプション選択無し"       Exit Sub     End If   End If   p = ThisWorkbook.Path & "\ご意見箱.xlsx"   If Dir(p) <> "" Then     Application.ScreenUpdating = False     Set tBk = Workbooks.Open(p)   Else     MsgBox "ご意見箱.xlsx 無し"     Exit Sub   End If   Set tSh = tBk.Worksheets("Sheet1")   With tSh     j = .Range("A" & Rows.Count).End(xlUp).Row     .Cells(j + 1, "A") = .Cells(j, "A") + 1     .Cells(j + 1, "C") = i 'Me.Controls("OptionButton" & i).Caption     .Cells(j + 1, "D") = Me.TextBox1.Text   End With   tBk.Save   tBk.Close   Application.ScreenUpdating = True End Sub

rhythm_red11
質問者

お礼

こんにちは、お世話になります。 早速、具体的で親身なアドバイスを下さり真に有難うございます。 おかげさまで動作させたいことに対する全体像のロジックが少し理解できました。 また宜しくお願い致します。

rhythm_red11
質問者

補足

ushi2015様へ こんにちは、お世話になります。 早速、具体的なアドバイスを下さり真に有難うございます。 ご質問にございました、オプションボタンの選択値は、キャプションになります。 その旨、お返事いたします。 また頂いた内容で試させていただきます。

その他の回答 (1)

回答No.1

ExcelVBAに詳しくないので恐縮ですが、バックグラウンドで開いても普通に開いても操作できるのは開いたブックである「ご意見箱.xlsx」のはずです。 開いた後にActiveで他のブックを選択していないかの確認が必要ではないでしょうか。 当方はExcel2013で、情報のみを管理しているシートを開いて、そこの表をコピーしてマクロ側に貼付け使用するという質問者様と逆のことをしていますが、その際に使っているつたないマクロを下記に載せておきます。 mybook = "ユーザーフォム.xlsm" datbook = "ご意見箱.xlsx" ' Application.ScreenUpdating = False 一応Bookを開いたのが見えるようにしています。 On Error GoTo エラー処理 'ファイルオープン hyoubook = Left(ThisWorkbook.Path, 5) & "\" & datbook 'こちらの用途のままです。    '質問者様の環境に合わせて調整をお願い致します。 Workbooks.Open hyoubook 'この時点で操作できるのは開いた「ご意見箱.xlsx」です。 '操作できないのであればWindows(hyoubook).Activateなどで操作するのはhyoubookとしてあげればいいかと。 Range("date1[#All]").Copy 'この時点で「ご意見箱.xlsx」のデータベースの範囲がコピーされます。    'この箇所の操作でa=Cells(Rows.Count, 1).End(xlUp).Rowとすると「ご意見箱.xlsx」の最終行が取得できています。 Windows(mybook).Activate 'ここで「ユーザーフォーム.xlsm」に操作を移します Worksheets(5).Select S = Selection.Address 'ここら下はこちらの環境依存です。 If S = "$A$1" Then Worksheets(5).Select Else Worksheets(5).Range("A1").Select End If ActiveSheet.Paste 'コピーした部分を貼り付けています。 Application.DisplayAlerts = False '警告非表示     '開いたブックを保存しないでとじています。保存する場合は別処理になります。 Workbooks(datbook).Close Application.DisplayAlerts = True '警告再表示 Worksheets(2).Activate エラー処理: MsgBox Err.Description 見当違いなどでお役に全く立てないかもしれませんが、ご参考になれば幸いです。

rhythm_red11
質問者

お礼

こんにちは、お世話になります。 いの一番に具体的で親身なアドバイスを下さり真に有難うございます。 頂戴したご回答アドバイスも一つの事例としての構文も参考にさせて頂きました。 如何せん私もVBA歴が浅いので、勉強になりました。 また宜しくお願い致します。

関連するQ&A

専門家に質問してみよう