• ベストアンサー

ユーザーフォーム上に表示されているテキストブックのテキストを右クリックでコピー&ペーストする方法

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 Wendy02です。 >ただ、なんせテキストボックスは100以上もあり、どのテキストボックスのデーターを、 最初に、それを言っていただいたほうが良かったですね。私の読みが足らなかったせいなのですが、2つあるのと100あるのではコードは変ります。 基本的には、同じなのですが、以下のようなコードになります。ひじょうに、ややこしいです。たぶん、良いとは思っていますが、ちょっと自信がありません。このコードで全てのテキストボックスに設定できるはずです。 ただし、自分のテキストボックスに貼り付けることは出来ませんし、一度貼り付けると、そのデータは失われます。 '<UserForm モジュール> 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 '<Class モジュール- Class1> 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

shiga-hiro
質問者

お礼

わざわざ再度の回答有難うございます。 回答頂いたモジュールを貼り付けて見ました。 結果は、、、動きませんでした。。。 回答内容の <標準モジュール> Public oldIndex As Integer Public myData As Variant についてですが、標準モジュールシートに、そのまま記述していいのでしょうか。 Subなどの記述はいらないのでしょうか。 そんなに詳しくないもので申し訳ありません。

関連するQ&A

  • ExeclVBAユーザーフォームから右クリックでショートカットメニューで困っています。

    ExcelVBAのユーザーフォーム上で、テキストなどを編集する際に右クリックしてコピー&ペーストとかのショートカットメニューを出したいんでけど、出せないものなのでしょうか?書籍などにはワークシート上で自作の右クリックのショートカットマクロを割り付ける、というTipsが掲載されていますが、参考にコードを書いてもうまくいきません。

  • ExcelVBAでセルをクリックしてユーザーフォームを表示するには

    OfficeExcel2003を使用しています。 ユーザーフォームのテキストボックスやコンボボックスに文字や数値を入力し、OKボタンを押せばエクセルのセルに記入できるようにしようと思ってます。 フォームはなんとか(形だけですが..)作成できたのですが、そのフォームを呼び出す方法として、入力したい行のA列のセルをクリックすればユーザーフォームが表示されるようにしたいのです。 ネット上でいろいろ検索してみましたがなかなか見つけることができませんでした。 初歩的な質問かもわかりませんが、教えて頂けないでしょうか。 宜しくお願い致します。

  • 右クリックのコピーやペーストができなくなりました

    Win8を使っています。 WordやExcelで作った文章を開く前にアイコンの状態で 右クリックでコピーやペーストをしたいのですが、 急にできなくなりました。 それまでは普通にできていたのに急にです。 再起動や放電も試してみましたが直りません。 どうしたら直るのでしょうか。 できればバックアップを取ってリカバリなどの大掛かりな方法以外でまず試したいです。 どうぞ宜しくお願いします。 ちなみにそれ以外の右クリックの操作は問題ありません。

  • 1行テキストでコピーペーストしたい

    お世話になります。 ビルダー8を使用しています。 フォームメールでURLの入力欄を1行テキストで作成しました。 実際に動かしてみると、1行テキストボックス内でコピー・ペーストができません。 URL欄に自分で全部入力させるのはちょっとと思います。ペーストができるようになる方法をお教えください。

  • エクセルのユーザーフォームの日付を和暦で表示したい

    いつもお世話になります。 エクセルのユーザーフォーム作成に初めて挑戦しております。 ワークシートに日付の元データがあり、ユーザフォームにテキストボックスを配置しその日付データを表示させています。(例:2006/8/3) やりたいことは、そのユーザーフォームにもうひとつ別のテキストボックスを作成し上記の日付データを和暦で自動的に表示させたいのです。(例:上記のテキストボックスが2006/8/3の場合、こちらのテキストボックスはH18.8.3と表示) 初心者ですが、よろしくお願いします。

  • あるテキスト入力だけ右クリックを禁止できますか?

    現在、メールアドレスを間違えてユーザ登録しないように、登録フォームで、メールアドレスを2回打ってもらうようになっているのですが、 コピーペーストをする方がいらして、 あまり効果がでていません。ページ全体で右クリックを禁止しているサイトは良く見かけますが、 メールアドレスの入力フォームだけ 右クリックを禁止したいのですが可能でしょうか?

  • ユーザーフォームにテキストフィールドを作りたい

    エクセルでユーザーフォームに、テキストフィールド(テキストを複数行に渡って入力でき、右側に上下に動かせるバーがあるもの)を作りたいんですが、どうやって作れば良いのでしょうか? ご存知の方、ご教授ください。 Excel2003です。

  • ユーザーフォームのテキスト印刷

    ユーザーフォームでテキストだけ印刷させる方法はありますか? ユーザーフォームに何箇所か入力するリストボックス、テキストボックスなどがあり、すべてを入力した後、最後にエクセルに登録するようなフォームなのですが、登録する前にそれらを印刷できればと思います。 登録したエクセルを印刷してもいいんですが、他の情報とかがあるのでユーザーフォームだけを印刷したいです。また、ユーザーフォームをそのまま印刷するとよけいな装飾なども印刷されトナーがもったいないのでそれもしたくはありません。 宜しくお願いします。

  • セルの値をユーザーフォームのテキストボックスに

    エクセルの質問です。 シート1にボタンを設置してユーザーフォームを呼び出すようにしています。 ユーザーフォームにテキストボックスを用意してて、シート1のセル(A1)に記入された数字を、ボタンを押した時に立ち上がったユーザーフォームのテキストボックスに表示されるようにしたいのですが、どうしたらいいのでしょうか?

  • ユーザーフォームへの文字の表示方法について

    VBAを始めたばかりの超初心者です。単純にユーザーフォームを作って検索ボタンを付け、検索結果を表示させる。こんな単純な事がわからずに困っています。 問題は何行もヒットしたらスクロールバーはどうするのか? 検索結果だけの部分をスクロールさせたい。 コントロールは何を張るのか?ラベル?テキストボックス? 検索したい情報はエクセルで有るのでそれを引っ張ってきたいだけなですが。。 出来れば同一のユーザーフォームに表示させたいです。 どなたか教えて下さい。宜しくお願い致します。