[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「あるかないか」の分岐がうまくいかない』(ニンジン)
[入力内容シート]に複数の画像(名前は「合体1」「合体2」…)があります。
画像は最大23枚ですが、抜けている場合もあります。
(例えば「合体5」と「合体7」がなくて合計21枚など)
表示されているすべての画像を[一覧シート]にコピペして5列ずつに配列したいです。
下記マクロで配列自体はできたのですが、
「画像があるかないか」の分岐が
上手くいっていないようなのでご教示頂けると助かります。
With Worksheets("入力内容")
For n = 1 To 23 図名 = "合体" & n On Error Resume Next If Not .Shapes(図名) Is Nothing Then .Shapes(図名).Copy With Worksheets("一覧") .Range("F1").PasteSpecial Paste:=xlPasteAll 図番 = .Shapes.Count 行 = (図番 + 4) \ 5 列 = 図番 Mod 5 If 列 = 0 Then .Shapes(図番).Top = .Cells(行, 5).Top .Shapes(図番).Left = .Cells(行, 5).Left Else .Shapes(図番).Top = .Cells(行, 列).Top .Shapes(図番).Left = .Cells(行, 列).Left End If End With Else GoTo p01 End If
p01:
Excel.Application.CutCopyMode = False Next n End with
具体的には、画像が「合体10」「合体11」の2枚しかない場合、
「合体1〜9」は期待通り無視され、
「合体10」「合体11」は期待通りの位置にコピペされ、
その続きに「合体11」が12枚(=23-11)貼り付けされます。
「合体12〜23」の画像がないにも関わらず、
あると判断され、最後にコピーした画像を
ループの度に貼りつけているということかと思いますが、
どこを直せば良いのでしょうか?
< 使用 Excel:unknown、使用 OS:unknown >
一目ですけど・・
>With Worksheets("入力内容") > For n = 1 To 23 > 図名 = "合体" & n > On Error Resume Next > If Not .Shapes(図名) Is Nothing Then > .Shapes(図名).Copy
↓でどうかなぁと思います(テストはしていませんが・・)」
Dim Shp as Object With Worksheets("入力内容") For n = 1 To 23 図名 = "合体" & n Set Shp = Nothing On Error Resume Next Set Shp = .Shapes(図名) On Error GoTo 0
If Not Shp Is Nothing Then Shp.Copy
( 半平太) 2019/01/08(火) 11:11
Setで収納する必要があったのですね。
自分で一から書くと、焦ってこういう細かいところを
ないがしろにしてしまうことが多々あるので、今後気を付けます。
どうも、ありがとうございました!
(ニンジン) 2019/01/08(火) 13:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.