質問: ユーザーフォーム上に表示されているテキストブックのテキストを右クリックでコピー&ペーストする方法 エクセルに関する質問をさせて頂きます。 エクセルのユーザーフォーム上に表示されているテキストボックスのテキストを、マウスの右クリックでコピー、別のテキストボックスにペーストしたく考えています。 色々調べて見たんですが、方法が見つかりません。 どなたかご存知の方がおられましたらご教授頂きたくお願い致します。
回答: こんにちは。 wendy02です。 >ただ、なんせテキストボックスは100以上もあり、どのテキストボックスのデーターを、 最初に、それを言っていただいたほうが良かったですね。私の読みが足らなかったせいなのですが、2つあるのと100あるのではコードは変ります。 基本的には、同じなのですが、以下のようなコードになります。ひじょうに、ややこしいです。たぶん、良いとは思っていますが、ちょっと自信がありません。このコードで全てのテキストボックスに設定できるはずです。 ただし、自分のテキストボックスに貼り付けることは出来ませんし、一度貼り付けると、そのデータは失われます。 ' private sub userform_initialize() dim mytxtboxes as new collection dim ctrl as variant dim i as integer redim myclass1(1 to 1) with mytxtboxes for each ctrl in me.controls if typeof ctrl is msforms.textbox then .add ctrl end if next ctrl end with redim preserve myclass1(1 to mytxtboxes.count) for i = 1 to mytxtboxes.count set myclass1(i) = new class1 with myclass1(i) .box = mytxtboxes(i) .index = i end with next end sub '<標準モジュール> public oldindex as integer public mydata as variant ' private withevents mytxtbox as msforms.textbox private myindex as integer public property get txtbox() as msforms.textbox set txtbox = mytxtbox end property public property let box(byval boxnewvalue as msforms.textbox) set mytxtbox = boxnewvalue end property public property get index() as integer index = myindex end property public property let index(byval intnewvalue as integer) myindex = intnewvalue end property private sub mytxtbox_mouseup(byval button as integer, byval shift as integer, byval x as single, byval y as single) if button <> 2 then exit sub if oldindex = 0 then if mytxtbox = "" then exit sub mydata = empty set mydata = new dataobject mydata.settext mytxtbox.text mydata.putinclipboard oldindex = myindex elseif oldindex <> myindex then mytxtbox.paste oldindex = 0 end if end sub