プロが教える店舗&オフィスのセキュリティ対策術

VBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコード

VBAにて、OMC?という機能を使ってユーザーフォームにスプレッドシートを複数設置しました。
このスプレッドシート上にあるデータを、エクセルシートに持ってくる事はできたのですが、スプレッドシートそのもののデータの追加、削除等が出来ません。

スプレッドシート→エクセルシートへのデータ移動はこのようなコードを使っています。これは問題なく動きました。
Sheets("DB").Range("H1").Value = UserForm1.Spreadsheet2.Range("A" & cnt).Value

ですが、逆に
UserForm1.Spreadsheet2.Range("A" & cnt).Value = Sheets("DB").Range("H1").Value
としても、エラーは出ませんが反映されないようです。

やりたい事は、スプレッドシートのある範囲の値をクリアしたいというもので
UserForm1.Spreadsheet1.Range("B10:H22").Select
Selection.Clear

このように設定したのですが、やはり反映されません。

ユーザーフォーム上のスプレッドシートを編集するには、何か特別なコーディングが必要なのでしょうか?

A 回答 (1件)

当方の Excel2003 + OWC11のスプレッドシートでは お示しのコードで動作していますよ



スプレッドシートのシートを指示していないのでアクティブシートに対しての操作になっているはずです

cntの値自体は期待通りなのでしょうか

UserForm1.Spreadsheet1.Range("B10:H22").Select
で選択自体は出来ていますか?

Selection.Clear
と記述してしまうとExcelのシートに対しての動作になってしまうと思います

スプレッドシートに対して行いたいのであれば
UserForm1.Spreadsheet1.Selection.Clear
といった具合にオブジェクト指定するか

With/End With などで指示しておきましょう

With UserForm1.Spreadsheet1
  .Range("B10:H22").Select
  .Selction.Clear
End With
といった具合です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!