[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『範囲を配列へ』(浅井)
済みません、教えて下さい。
規則正しく並んだ飛び地の範囲を配列にする事は出来ますでしょうか。
例えば、同じ列で3行毎のセルを配列へ格納。(A1,A4,A7,A10,A3・・・)
又、幾つかのRange変数を配列に格納する方法も教えて下さい。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
(γ) 2017/12/09(土) 10:43
セルに画像貼付けをする上で対象となるセルは整列しています。又、それは結合セルとなっています。 貼付け画像数は分かっていて、対象セルも同じく分かります。両方が分かっている為、一括挿入処理も 出来ます。セル番地を配列にしてから行う手順としてです。 このセル番地からの方法をセル範囲として行う事は出来ないものかと試しました出きませんでした。 つまり、出来るのか出来ないかを知りたかったのです。
只、前から飛び地のセル範囲を配列に出来ないものかと思ってはいましたのでこの機会にと思い質問しました。 尚、Range変数も同じ扱いで出来ないかと単純に想像したので質問に追加しました。
こんな事が質問の発端です。よろしくお願いします。
(浅井) 2017/12/09(土) 11:23
私の中では (1)GetOpenFilenamaeから得たファイル数から、シートの埋込範囲を配列化する。(上限有りの不定数) (2)その範囲配列を利用して画像を埋込する。 の手順で処理したいと考えていました。
'(1)画像埋込セル番地の配列(取敢えず文字列の範囲配列) For i = 1 To 4 For j = 1 To 7 n = n + 1 if n > ファイル数 Then Exit For RgAddr(n) = Range("Base").Offset((i - 1) * 9, (j - 1) * 2 + 1).Address Next Next
ここまでは良いのですが[参考]の処理と繋がらなくてどうしたもんか悩んでいました。 (1)でも実際に得られるの連結セル番地ではなく、先頭番地だからRg.MergeArea.Rows.Countなどが掴めません。 ★問題行を無視すれば何とかなるのですが
'[参考] 以前に見た質問の回答からの抜粋 '************************************* 'InputBox から得た範囲から処理 For Each Rg In PicRg If Rg.Address = Rg.MergeArea(1).Address Then ←★問題行 Set mSp = ActiveSheet.Shapes.AddPicture( _ Filename:=pkfile(n), _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Rg.MergeArea.Left, _ Top:=Rg.MergeArea.Top, _ Width:=-1, Height:=-1) n = n + 1 If UBound(PicRg) < n Then Exit For End If Next Rg
これが現状です。よろしくお願いいたします。
(浅井) 2017/12/09(土) 12:47
(マナ) 2017/12/09(土) 13:00
(マナ) 2017/12/09(土) 13:02
マナさん済みません誤った説明をして・・・
>★問題行を無視すれば何とかなるのですが ↓↓↓ 実は、繋げる方法が分からなく何ともならないのです。 (1)では文字列の範囲配列で[参考]では実体の範囲となっていて困ってます。
質問の仕方が悪かったと思います。(飛び範囲ばかりでなく、質問内容も飛んでました) 尚、現状コードは殆ど変わらないです。
(浅井) 2017/12/09(土) 13:44
それでも構いせんので、提示お願いします。
(マナ) 2017/12/09(土) 13:55
For i = 1 To 4 For j = 1 To 7 n = n + 1 If n > ファイル数 Then Exit For Set Rg = Range("Base").Offset((i - 1) * 9, (j - 1) * 2 + 1) Set mSp = ActiveSheet.Shapes.AddPicture( _ Filename:=pkfile(n), _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Rg.MergeArea.Left, _ Top:=Rg.MergeArea.Top, _ Width:=-1, Height:=-1)
Next Next
(マナ) 2017/12/09(土) 14:05
(マナ) 2017/12/09(土) 14:09
マナさん ありがとうございます。ご指摘の通りです。
何度も試行錯誤し疲れて、私の限度を超えたので質問しました。(どこかで間違っていた?) まだ気になるのは、AddPicture句の中の『Rg.MergeArea…』です。 Rg.MergeAreaは中身を問う事もないので多分問題にはならないと思います。
必要か否かは別にして、本題の範囲配列をするにはどうしたらよいのでしょうか?
(浅井) 2017/12/09(土) 16:14
ReDim RgAddr(1 To ファイル数)
For i = 1 To 4 For j = 1 To 7 n = n + 1 If n > ファイル数 Then Exit For Set RgAddr(n) = Range("Base").Offset((i - 1) * 9, (j - 1) * 2 + 1) Next Next
(マナ) 2017/12/09(土) 16:32
回答を頂きながら遅れ遅れで済みません。
こんな簡単な事と思われるのでしょうが、全く気が付きませんでした。
朝から分からず気が気になってイライラしていました。これで一気にモヤモヤ解消です。
大変ありがとうございました。
(浅井) 2017/12/09(土) 18:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.