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も見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
-
ExeclVBAユーザーフォームから右クリックでショートカットメニューで困っています。
Visual Basic(VBA)
-
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
VBでグローバル変数を宣言するには
-
Form間の値の渡し方
-
ユーザー定義関数に#NAME?が返...
-
VBA モジュールを閉じるショー...
-
VBA モジュールで共通に使う変...
-
エクセルVBAで標準モジュー...
-
EXCEL VBAモジュール...
-
複数のフォーム間での変数宣言
-
ベースモジュールって?
-
関数の引数にクラスを使いたい
-
Excel VBA 標準モジュール内で...
-
「デバイスは PRN を初期化でき...
-
「Perl Command Line InterPret...
-
例外処理のフローチャートの記...
-
tex についての質問です このコ...
-
Python エクセル読み込み xlrd...
-
プロシージャの戻り値を取得す...
-
XAMPPでImageMagickをインスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
モジュールとクラスの違いって...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
vba userFormのSubを標準モジュ...
-
ベースモジュールって?
-
標準モジュールを削除したい。(...
-
Access VBA標準モジュールにつ...
-
Form間の値の渡し方
-
VBAProjectのモジュ...
-
'Range'メソッドは失敗しました
おすすめ情報