質問: 【エクセルVBA】クリップボードにある言葉をすべて選択したセルの後につけたしたい。 クリップボードにある言葉(例 ぜひご検討下さい。) をエクセルで選択しているセルの言葉すべてにつけたしたいです。 選択しているセルにはすでにそれぞれ文字列がはいっています。その後に入れたいのです。 例A1とA2をクリックしている。A1には青森県のりんごです。A2にはタイのカレーです。とあります。 マクロを実行すると、クリップボードに現在ある言葉がつけたされて、 A1は青森県のりんごです。ぜひご検討下さい。 A2はタイのカレーです。ぜひご検討下さい。 となります。 マクロのみのご回答をぜひお願いいたします。(関数やその他アドバイスには恐れ入りますが、ポイントをおつけできません) どうかよろしくお願いいたします。
回答: 途中までしかできていないので、ポイントはいりません。 解説もいらないとのことですが、 参照設定だけ、下記の動画を見てください。 !D VBA クリップボードで検索する とイロイロなページがヒットします。 上記を参考にして、 参照設定で 「Microsoft Forms 2.0 Object Library」 と言われるが、見つからない ぉぃぉぃ で、フォームを挿入すると簡単と書いてあったので、 一つフォームを挿入する ``` Sub はてな回答テスト20170802() Dim CB As Variant 'クリップボードにはさまざまな形式なので Dim strADDTEXT As String 'クリップボードから追記するテキスト保管 Dim selectRANGE As Range '選択範囲 Dim n As Integer 'N番目 Dim y As Integer '行 Dim x As Integer '列 'クリップボード内のデータ種類を判断 CB = Application.ClipboardFormats If CB(1) = -1 Then Debug.Print "クリップボードには何も入っていません。" Exit Sub End If 'テキスト形式か? If CB(1) = xlClipboardFormatText Then 'テキストデータを取り出す With New MSForms.DataObject .GetFromClipboard ''変数のデータをDataObjectに格納する strADDTEXT = .GetText 'テキストを取得 Debug.Print strADDTEXT '選択されているセルに対して処理を行う Set selectRANGE = ActiveWindow.Selection '複数セル、範囲もあるのでループさせる For n = 1 To selectRANGE.Areas.Count '※nは1から 'セルが範囲選択されている可能性があるので、 Debug.Print n & " " & selectRANGE.Areas(n).Address Debug.Print selectRANGE.Areas(n).Rows.Count Debug.Print selectRANGE.Areas(n).Columns.Count For y = 1 To selectRANGE.Areas(n).Rows.Count '行のループ For x = 1 To selectRANGE.Areas(n).Columns.Count '列のループ Debug.Print selectRANGE.Areas(n).Cells(y, x).Address Debug.Print selectRANGE.Areas(n).Cells(y, x).Value selectRANGE.Areas(n).Cells(y, x).Value = selectRANGE.Areas(n).Cells(y, x).Value & strADDTEXT Next x Next y Next n End With End If End Sub ``` ↑のコードを貼り付けて、テストしてみてください。 Debug.Print は 必要ないので、消してください。 動画の後半で、テスト時、Excelのセルをコピーしてクリップボードに入れた場合、 テキストとして 反応しないので、バグってます。 'テキスト形式か? If CB(1) = xlClipboardFormatText Then 以外を見ると、できると思います。 以上、完璧じゃないので、ポイントはゼロでオッケーです。 解決の糸口、回答のたたき台となれば幸いです。