Excel VBA質問箱 IV

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

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


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

【66294】クリップボードから一次元配列 亜矢 10/8/19(木) 7:51 質問[未読]
【66295】Re:クリップボードから一次元配列 kanabun 10/8/19(木) 8:29 発言[未読]
【66296】Re:クリップボードから一次元配列 亜矢 10/8/19(木) 10:11 質問[未読]
【66297】Re:クリップボードから一次元配列 kanabun 10/8/19(木) 10:44 発言[未読]
【66298】Re:クリップボードから一次元配列 亜矢 10/8/19(木) 11:01 お礼[未読]

【66294】クリップボードから一次元配列
質問  亜矢  - 10/8/19(木) 7:51 -

引用なし
パスワード
   いつも御世話になります。
オートフィルターで抽出した列(1列)をクリップボードに格納し
それを取り出す時に一次元配列にする方法があれば教えていただきたいと思います。
Dim myBj As New DataObject
Dim mystr As Variant
Dim PL AS Long
Dim X As Variant

   ・ 
   ・
   ・
  .Range("A1").AutoFilter Field:=2, Criteria1:="?" & X
  PL = .Range("B1000000").End(xlUp).Row
Workbooks("ABC.xlsb").Sheets("sheet1").Range(.Cells(2, 2), .Cells(PL,2)).Copy
    With myBj
     .GetFromClipboard
     mystr = .GetText
    End With
mystrにはセルの内容が空白を挟みながれ連続して入っていました。
このmystrを一次元配列にしたいと思います。
なおシートに貼り付けてそれから取得すればいいとの解答もあると思いますが、
それは実施しております。
 今回の質問はクリップボートから直接一次元配列の取得が可能かどうかです。
 もし、可能であるならこの質問を有効とさせて下さい。
よろしくお願いします。
 

【66295】Re:クリップボードから一次元配列
発言  kanabun  - 10/8/19(木) 8:29 -

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

>オートフィルターで抽出した列(1列)をクリップボードに格納し
>それを取り出す時に一次元配列にする方法

> Workbooks("ABC.xlsb").Sheets("sheet1").Range(.Cells(2, 2), .Cells(PL,2)).Copy
>    With myBj
>     .GetFromClipboard
>     mystr = .GetText
>    End With
>mystrにはセルの内容が空白を挟みながれ連続して入っていました。
>このmystrを一次元配列にしたいと思います。

空白 ですか?
列をクリップボードに送ると、vbCrLf改行コードで行が区切られて
いるはずですが...
なので、
   myArry = Split(.GetText, vbCrLf)
とすると、
一次元配列(最初の要素のIndex は 0)が得られると思うのですが。
いちど 試してみてください。

【66296】Re:クリップボードから一次元配列
質問  亜矢  - 10/8/19(木) 10:11 -

引用なし
パスワード
   ▼kanabun さん:
>▼亜矢 さん:
>
>>オートフィルターで抽出した列(1列)をクリップボードに格納し
>>それを取り出す時に一次元配列にする方法
>
>> Workbooks("ABC.xlsb").Sheets("sheet1").Range(.Cells(2, 2), .Cells(PL,2)).Copy
>>    With myBj
>>     .GetFromClipboard
>>     mystr = .GetText
>>    End With
>>mystrにはセルの内容が空白を挟みながれ連続して入っていました。
>>このmystrを一次元配列にしたいと思います。
>
>空白 ですか?
>列をクリップボードに送ると、vbCrLf改行コードで行が区切られて
>いるはずですが...
>なので、
>   myArry = Split(.GetText, vbCrLf)
>とすると、
>一次元配列(最初の要素のIndex は 0)が得られると思うのですが。
>いちど 試してみてください。
ありがとうございました。一次元配列になっていましたが、最後の配列が
""の空白が入っていましたが、これはなぜでしょうか。実際のindexは0から必要な数マイナス1なのですが、最後に1ヶ余分なものが入っていました。

【66297】Re:クリップボードから一次元配列
発言  kanabun  - 10/8/19(木) 10:44 -

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

>ありがとうございました。一次元配列になっていましたが、最後の配列が
>""の空白が入っていましたが、これはなぜでしょうか。実際のindexは0から必要な数マイナス1なのですが、最後に1ヶ余分なものが入っていました。

たとえば シートの

  B列
2 あ
3 い
4 う
5 え
6 お

この範囲をクリップボードにCopy すると、

"あ▲い▲う▲え▲お▲"
           ( ▲ は 改行コード vbCrLf )

というひとつづきの文字列として格納されます。

DataObject にこれをGet して
この文字列を 改行コードで Split 分割すれば、
  Split("あ▲い▲う▲え▲お▲", "▲")

Array("あ", "い", "う", "え", "お", "")
    0   1   2   3   4  5

のように、最後の要素(5) は 長さ0 の文字列となることは
お分かりですか?

【66298】Re:クリップボードから一次元配列
お礼  亜矢  - 10/8/19(木) 11:01 -

引用なし
パスワード
   ▼kanabun さん:
>▼亜矢 さん:
>
>>ありがとうございました。一次元配列になっていましたが、最後の配列が
>>""の空白が入っていましたが、これはなぜでしょうか。実際のindexは0から必要な数マイナス1なのですが、最後に1ヶ余分なものが入っていました。
>
>たとえば シートの
>
>  B列
>2 あ
>3 い
>4 う
>5 え
>6 お
>
>この範囲をクリップボードにCopy すると、
>
>"あ▲い▲う▲え▲お▲"
>           ( ▲ は 改行コード vbCrLf )
>
>というひとつづきの文字列として格納されます。
>
>DataObject にこれをGet して
>この文字列を 改行コードで Split 分割すれば、
>  Split("あ▲い▲う▲え▲お▲", "▲")
> ↓
> Array("あ", "い", "う", "え", "お", "")
>    0   1   2   3   4  5
>
>のように、最後の要素(5) は 長さ0 の文字列となることは
>お分かりですか?
よく、わかりました。ありがとうございました。

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