Excel VBA質問箱 IV

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

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


191 / 13645 ツリー ←次へ | 前へ→

【81593】可視セルの値をクリップボードに格納する方法 コウジ 21/1/15(金) 15:53 質問[未読]
【81596】Re:可視セルの値をクリップボードに格納す... sinzo 21/1/16(土) 18:36 回答[未読]
【81597】Re:可視セルの値をクリップボードに格納す... コウジ 21/1/18(月) 9:59 質問[未読]
【81599】Re:可視セルの値をクリップボードに格納す... sinzo 21/1/19(火) 21:28 回答[未読]

【81593】可視セルの値をクリップボードに格納する...
質問  コウジ  - 21/1/15(金) 15:53 -

引用なし
パスワード
   オートフィルタでフィルタリングされたD列の値をクリップボードに格納したいのですが、
下記のコードだと1行だけしか格納されません。どうしたらよいでしょうか?

Dim d      As Long      
Dim n      As Long      
Dim i      As Range      
Dim clipboard  As New DataObject 

d = Day(Date)

Set i = Range("9:9").Find(d, LookAt:=xlWhole, SearchOrder:=xlByColumns)

n = Range(i.Address).Column

ActiveSheet.AutoFilterMode = False

Range("9:9").autofilter

Range(i.Address).autofilter n, RGB(81, 216, 255), xlFilterCellColor

With clipboard
  .SetText Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
  .PutInClipboard      
  .GetFromClipboard     
End With

【81596】Re:可視セルの値をクリップボードに格納...
回答  sinzo  - 21/1/16(土) 18:36 -

引用なし
パスワード
   >With clipboard
>  .SetText Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
>  .PutInClipboard      
>  .GetFromClipboard     
>End With

簡単なのはこれで
Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy

区切り文字で結合するなら、こんなかんじかな
Dim aRng As Range, tRng As Range
Dim Txt As String
Txt = ""
For Each aRng In Range(Range("D10"), Range("D" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Areas
 For Each tRng In aRng
 Txt = Txt & "," & tRng.Text
 Next
Next
Txt = Replace(Txt, ",", "", 1, 1)

 Dim clipboard  As New DataObject
 With New DataObject
  .SetText Txt
  .PutInClipboard
  '.GetFromClipboard
 End With

【81597】Re:可視セルの値をクリップボードに格納...
質問  コウジ  - 21/1/18(月) 9:59 -

引用なし
パスワード
   ▼sinzo さん:
>>With clipboard
>>  .SetText Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
>>  .PutInClipboard      
>>  .GetFromClipboard     
>>End With
>
>簡単なのはこれで
>Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
>
>区切り文字で結合するなら、こんなかんじかな
>Dim aRng As Range, tRng As Range
>Dim Txt As String
>Txt = ""
>For Each aRng In Range(Range("D10"), Range("D" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Areas
> For Each tRng In aRng
> Txt = Txt & "," & tRng.Text
> Next
>Next
>Txt = Replace(Txt, ",", "", 1, 1)
>
> Dim clipboard  As New DataObject
> With New DataObject
>  .SetText Txt
>  .PutInClipboard
>  '.GetFromClipboard
> End With

確かに下記の方法だと簡単ですが、処理が終わると(オートフィルタを外す)と
クリップボードに格納してあった値はなくなってしまいます。
クリップボードに保持したままエクセルを閉じたいのですが・・・

>簡単なのはこれで
>Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
>

【81599】Re:可視セルの値をクリップボードに格納...
回答  sinzo  - 21/1/19(火) 21:28 -

引用なし
パスワード
   クリップボードからText取得し、再度登録する。

Range(Range("D10"), Range("d" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy

Dim str As String
 With New DataObject
   .GetFromClipboard
   str = .GetText
 End With
 Application.CutCopyMode = False
 With New DataObject
  .SetText str
  .PutInClipboard
 End With

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