NazeTarouさん、こんばんは。
毎日、一度はここをチェックしていました。私は、一応、すべてExcelで管理されていますから、気になる質問は、ダイレクトで閲覧できるようにしています。締めない限りは、半年先でも1年先でも、ここに戻ってこられるようにしています。
>Copyができないとありましたが、
私も思い違いでした。単に、Copy Destination が出来ないだけでした。一旦、クリップボードに入れればよかっただけでした。
>フォームをイニシャライズ後変化するシートの内容を常時反映するにはどのようにするのでしょうか。
このようにしてみたらいかがでしょうか?Worksheet_Changeイベントがよいのか、Worksheet_SelectionChangeイベントが良いのか分りませんが、中身は同じはずです。一瞬、貼り付けの時のタイム・ロスがありますが、それほど気になるものではないと思っています。
もしかしたら、不備な点があるかもしれませんから、何度か、チェックしてみてください。また、Sheet1 のUsedRangeというのは、不可抗力で広がることがありますから、もし、範囲が特定できるようでしたら、Endメソッドを使って範囲を取るようにすればよいと思います。
'<シートモジュール>
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Worksheets("Sheet1").UsedRange.Copy
With UserForm1.Spreadsheet1
.Cells.Range("A1").Paste
.Cells(1, 1).Select
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'<Userform モジュール>
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Sheet1").UsedRange.Copy
With Spreadsheet1
.Cells.Range("A1").Paste
.Cells(1, 1).Select
Application.CutCopyMode = False
.DisplayTitleBar = False 'タイトルバーなし
.DisplayToolbar = False 'ツールバーなし
End With
Application.ScreenUpdating = True
End Sub
'もちろん、UserFormを立ち上げるときは、モードレスモードです。
Sub UserFormShowing()
UserForm1.Show 0
End Sub
お礼
Wendy02さんNazeTrouです。遅くなりましたが、昨日今日とサンプルコードを参考にしてやっと所期の目的を達するプログラムの改造を終わりました。 おかげでメモ帳にアウトするより処理過程が随分スッキリしました。心からお礼申し上げます。Wendy02さんから随分勉強をさせていただきました。今後の一層のご活躍を祈念いたしております。