Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2285 / 13646 ツリー ←次へ | 前へ→

【68976】ドロップアンドドロップ 亜矢 11/5/5(木) 12:03 質問[未読]
【68978】Re:ドロップアンドドロップ UO3 11/5/5(木) 14:31 発言[未読]
【68982】Re:ドロップアンドドロップ 亜矢 11/5/5(木) 16:27 質問[未読]
【68983】Re:ドロップアンドドロップ UO3 11/5/5(木) 17:27 回答[未読]
【68985】Re:ドロップアンドドロップ 亜矢 11/5/5(木) 17:42 お礼[未読]

【68976】ドロップアンドドロップ
質問  亜矢  - 11/5/5(木) 12:03 -

引用なし
パスワード
   よろしくお願いします。
 ユーザーフォーム上にあるテキストボックスに
 エクセルシートの適当なセルのデータを入れたいのですが、
 コピー、ペーストでなく、ドロップアンドドロップ(セルのデータをつまんで
 テキストボックスへ入れたい)で行いたいのですが、方法がわかりません。
 まず、ドロップアンドドロップができるものでしょうか。
 いろいろ調べてもよくわかりませんでした。
  ちなみに、インターネットからのデータはドロップアンドドロップで
 処理出来ています。
 

【68978】Re:ドロップアンドドロップ
発言  UO3  - 11/5/5(木) 14:31 -

引用なし
パスワード
   ▼亜矢 さん:

こんにちは
【ドラッグ&ドロップ】ですね。

基本的には、この機能はないと思われます。
フォームへのコピー以前に、シート上のあるセルを選択してマウスを押したまま移動させると
選択領域がマウスの移動にしたがって拡大していきますよね。
通所はつまんだもの【のみ】をマウスでひっぱるという動作なんですけどね。

で、この選択領域が拡大するということには目をつぶり、また実際にはドラッグ&ドロップ機能では
ないのですが、ほっと、ごまかしのコードです。

任意のセルを選び、ドラッグしてユーザーフォームのテキストボックスの上でマウスを
離してみてください。

(標準モジュール)変数宣言のみ。

Public myStr As String
Public DragFlag As Boolean

(シートモジュール)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  myStr = Target(1).Value
  DragFlag = True
End Sub

(フォームモジュール)

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If DragFlag Then TextBox1.Value = myStr
  DragFlag = False
End Sub

★実はインチキです。ドラッグ&ドロップをしなくても以下で、値がコピーされます。
 で、ドラッグ&ドロップ【しても】同じことになるということです。

 ・セルを選択する。
 ・ここでマウスを離してもいい。(はなさなくてもいい)
 ・テキストボックスの上にマウスを持っていく。(マウスをおさなくてもいい。おしてもいい)

>よろしくお願いします。
> ユーザーフォーム上にあるテキストボックスに
> エクセルシートの適当なセルのデータを入れたいのですが、
> コピー、ペーストでなく、ドロップアンドドロップ(セルのデータをつまんで
> テキストボックスへ入れたい)で行いたいのですが、方法がわかりません。
> まず、ドロップアンドドロップができるものでしょうか。
> いろいろ調べてもよくわかりませんでした。
>  ちなみに、インターネットからのデータはドロップアンドドロップで
> 処理出来ています。
>

【68982】Re:ドロップアンドドロップ
質問  亜矢  - 11/5/5(木) 16:27 -

引用なし
パスワード
   ▼UO3 さん:
>▼亜矢 さん:
>
>こんにちは
>【ドラッグ&ドロップ】ですね。
>
>基本的には、この機能はないと思われます。
>フォームへのコピー以前に、シート上のあるセルを選択してマウスを押したまま移動させると
>選択領域がマウスの移動にしたがって拡大していきますよね。
>通所はつまんだもの【のみ】をマウスでひっぱるという動作なんですけどね。
>
>で、この選択領域が拡大するということには目をつぶり、また実際にはドラッグ&ドロップ機能では
>ないのですが、ほっと、ごまかしのコードです。
>
>任意のセルを選び、ドラッグしてユーザーフォームのテキストボックスの上でマウスを
>離してみてください。
>
>(標準モジュール)変数宣言のみ。
>
>Public myStr As String
>Public DragFlag As Boolean
>
>(シートモジュール)
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>  myStr = Target(1).Value
>  DragFlag = True
>End Sub
>
>(フォームモジュール)
>
>Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
>  If DragFlag Then TextBox1.Value = myStr
>  DragFlag = False
>End Sub
>
>★実はインチキです。ドラッグ&ドロップをしなくても以下で、値がコピーされます。
> で、ドラッグ&ドロップ【しても】同じことになるということです。
>
> ・セルを選択する。
> ・ここでマウスを離してもいい。(はなさなくてもいい)
> ・テキストボックスの上にマウスを持っていく。(マウスをおさなくてもいい。おしてもいい)
早速のご指導ありがとうございました。同じブックのシートではできました。
説明が不足していましたが、セルは他のブックのものです。
 他のブックのシートから同じ様にするにはどのようにしたらよいか
教えていただきたいと思います。

【68983】Re:ドロップアンドドロップ
回答  UO3  - 11/5/5(木) 17:27 -

引用なし
パスワード
   ▼亜矢 さん:

>セルは他のブックのものです。
> 他のブックのシートから同じ様にするにはどのようにしたらよいか
>教えていただきたいと思います。

それでは、シートモジュールのコードを消して、かわりに
ThisWorkbookモジュールに以下。
コピーするブックやシートを限定することもできますが、とりあえず
何でもかんでもOKバージョンです。

Option Explicit

Dim WithEvents xlApp As Application

Private Sub Workbook_Open()
  Set xlApp = Application
End Sub

Private Sub xlApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  myStr = Target(1).Value
  DragFlag = True
End Sub

【68985】Re:ドロップアンドドロップ
お礼  亜矢  - 11/5/5(木) 17:42 -

引用なし
パスワード
   ▼UO3 さん:
>▼亜矢 さん:
>
>>セルは他のブックのものです。
>> 他のブックのシートから同じ様にするにはどのようにしたらよいか
>>教えていただきたいと思います。
>
>それでは、シートモジュールのコードを消して、かわりに
>ThisWorkbookモジュールに以下。
>コピーするブックやシートを限定することもできますが、とりあえず
>何でもかんでもOKバージョンです。
>
>Option Explicit
>
>Dim WithEvents xlApp As Application
>
>Private Sub Workbook_Open()
>  Set xlApp = Application
>End Sub
>
>Private Sub xlApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
>  myStr = Target(1).Value
>  DragFlag = True
>End Sub
ありがとうございました。解決しました。

2285 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free