
No.7ベストアンサー
- 回答日時:
こんばんは。
Wendy02です。>ユーザーには「Cntl+C」と「Cntl+V」で対応させるようにします。
とても残念な対応ですが、それがベストだと思います。私が書いた方法は、Excelでは上級レベルのテクニックです。お話の様子では、たぶん、基本的なコードの貼り付け位置が違っているような気がします。
こちらは、新規ブックで試してみましたので、間違いはないはずですが、こちらは、分っている部分でも、何か指摘し忘れている部分があるのかもしれません。
一度、Class 内モジュール・ペインの横の枠をクリックして、いくつかにブレークポイントをつけて、きちんと設定しているか、様子をみていただければと、もしかしたら分るかもしれません。ひとつずつ丁寧にみれば、どこかで抜け落ちが分るはずですが、ある程度のレベルが必要になってしまいますので、私のほうも、これ以上はなんともいいようがありません。
色々有難うございました。
とりあえず、「Cntl+C」と「Cntl+V」でVer1.0として共用開始します。
その上で、Ver1.1なり、Ver2.0にすべく勉強します。
またその時点で分からない事が出てきたら質問させて頂きますのでその節は、何卒宜しくお願い致します。
本当に有難うございました。
No.6
- 回答日時:
こんにちは。
Wendy02です。すみません、貼り付けるコードがひとつ抜けていました。
#'<UserForm モジュール>
Dim myClass1() As New Class1 'モジュールの一番上に貼り付けます。
>標準モジュールシートに、そのまま記述していいのでしょうか。
>Subなどの記述はいらないのでしょうか。
Class モジュールでは、値が保存出来ないので、標準モジュールに、セットしたわけですね。
それで、様子をみてください。でも、右クリックも数がたくさんあると、ちょっとシンドイですね。
何度も申し訳ありません。
UserForm モジュールの先頭行に
Dim myClass1() As New Class1
を貼り付けてみましたが、うまく動きません。
テキストボックスに入力したテキストを選択して、右クリックしても何の変化もありません。
さらに別のテキストボックスにカーソルを移動して、右クリックしても変化がありません。
ちなみに「Ctrl+V」で貼り付けてみたら
Dim myClass1() As New Class1
と貼り付きます。
テキストボックスはユーザーフォーム上に設置したマルチページに配置しているので、Private Sub MultiPage1_Initialize()でも試してみましたがダメでした。
(もちろん、Private Sub UserForm_Initialize()に貼り付けてもみました。)
完成までにあまり時間がありませんのでユーザーには「Cntl+C」と「Cntl+V」で対応させるようにします。
色々お手数をお掛けしてすいませんでした。
有難うございました。
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
わざわざ再度の回答有難うございます。
回答頂いたモジュールを貼り付けて見ました。
結果は、、、動きませんでした。。。
回答内容の
<標準モジュール>
Public oldIndex As Integer
Public myData As Variant
についてですが、標準モジュールシートに、そのまま記述していいのでしょうか。
Subなどの記述はいらないのでしょうか。
そんなに詳しくないもので申し訳ありません。
No.4
- 回答日時:
こんばんは。
ユーザーフォーム自身にクリップボードをもっていますが、クリップボードを使わずに、以下のように、右クリックして、ダイレクトに別のテキストボックスに送ってしまえば簡単ではないでしょうか?
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If TextBox1.Text <> "" Then
If Button = 2 Then
TextBox2.Text = TextBox1.Text
End If
End If
End Sub
>「マウスの右クリック」でコピーし、マウスの右クリックでペーストしたいんです。
もし、これをするなら、以下のように、一旦、クリップボードに確保しなければなりませんね。お好きなほうをお使いください。
'--------------------------------------------
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Set MyData = New DataObject
If TextBox1.Text <> "" Then
If Button = 2 Then
MyData.SetText TextBox1.Text
MyData.PutInClipboard
End If
End If
End Sub
Private Sub TextBox2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 2 Then
TextBox2.Paste
End If
End Sub
回答有難うございます。
是非一度試して見たいと思います。
ただ、なんせテキストボックスは100以上もあり、
どのテキストボックスのデーターを、どこに持っていくのかはユーザー任せになってしまうのです。
まだまだ悩むことは多くありそうですが、もう一分張りしてみます。
有難うございました。
No.3
- 回答日時:
専門的は話になるのですが
ユーザーフォームはマクロで組むで作ります。ユーザーフォームであたの望んでいるマウスでのコピー&ペーストは、
イベントプロシージャーという物を作成しないといけないようです。
ユーザーフォームではマウスでのコピー&ペーストは基本的には無理だと思います。
やはりショートカットキーの、Ctrl+CでコピーCtrl+Vで貼り付けるのが一番簡単です。
回答有難うございます。
おっしゃる通り、かなり難しいと言うのは詳しい知人も言っていました。
もう少しじっくり検討してみます。有難うございました。
No.2
- 回答日時:
文字列をドラッグで選択した後、Ctrl+CでコピーCtrl+Vで貼り付けではだめでしょうか
この回答への補足
回答有難うございます。
質問内容を補足させて頂きます。
バージョンは「EXCEL2000」です。
また、質問したい内容は、ユーザーフォーム上のテキストボックスの内容を、「マウスの右クリック」でコピーし、マウスの右クリックでペーストしたいんです。
言葉足らずで大変申し訳ありません。
何卒宜しくお願いします。
回答有難うございました。
補足に書きました通り、マウスの右クリックで行いたいと考えています。
ショートカットキーで行う事に耐えられない使用者となる予定なもんで。。。
もう少しじっくり検討してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテキストボックス内に2つのフィールドの値を比較して大きい方の値を表示させる方法 1 2022/09/09 10:50
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- その他(Microsoft Office) EXCEL2007 右クリックに「値を貼り付け」がない プライベートのパソコンを購入し(window 3 2022/04/13 23:10
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- ノートパソコン Onlineエクセルで右クリックが使えない 1 2023/07/01 22:07
- Google 翻訳 英語翻訳ソフトは良いものはありますか パソコン Chrome で右クリックで翻訳できるようにするには 1 2022/03/28 21:30
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
-
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
Excel VBAで、ユーザーフォーム...
-
vba userFormのSubを標準モジュ...
-
ExcelでTelnetを動かしたい
-
vba 標準モジュールインポート...
-
ユーザー定義関数に#NAME?が返...
-
Access VBA標準モジュールにつ...
-
VB.NETでの他アプリケーション...
-
大量の標準モジュールを解放す...
-
VBA ユーザーフォーム Image1 ...
-
'Range'メソッドは失敗しました
-
VBAで旧字体を異字体に一括で変...
-
Workbook.BeforeSave イベント...
-
モジュールからフォームのボタ...
-
ベースモジュールって?
-
AddressOf と同じ機能を持った...
-
Excel VBA 標準モジュールの整...
-
レンタルサーバ探し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
vba userFormのSubを標準モジュ...
-
ユーザー定義関数に#NAME?が返...
-
VBでグローバル変数を宣言するには
-
Excel VBA 『Call』で呼び出す...
-
モジュールの最大数はいくつな...
-
VBAで旧字体を異字体に一括で変...
-
【vba】フォームに書いてあ...
-
VBAで別モジュールへの変数の受...
-
Access VBA標準モジュールにつ...
-
Excel VBA 定義されたプロージ...
-
モジュールとクラスの違いって...
-
'Range'メソッドは失敗しました
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
大量の標準モジュールを解放す...
-
グラフのX,Y座標を取得したい
-
Excel VBA 標準モジュール内で...
おすすめ情報