他の質問スレからVBAエクセルに貼り付けた画像をセルにあった大きさにして(等倍)に並べる方法としてA列に順番に並べる方法を見つけたのですが、これをA,Bの2列に並べるにはどのように変更を加えたらよいでしょうか。
目的としてはランダムなサイズでシートに張られた画像数百枚を
キレイに並べて2列にして印刷をかけたい
また、可能であれば、並べ替えるの時点で文字が記入済みのセルを飛ばして並べたいです。
画像=■
■■
■■
文字
■■
■■
文字
■■
■■
■■
■■
文字
■■
Sub Sample1()
Dim cnt As Long, mySp As Shape
Dim myHgt As Double, myWdt As Double
Dim myRH As Double, myRW As Double
For Each mySp In ActiveSheet.Shapes
cnt = cnt + 1
myHgt = mySp.Height
myWdt = mySp.Width
myRH = Cells(cnt, "A").Height
myRW = Cells(cnt, "A").Width
With mySp
.Left = Cells(cnt, "A").Left
.Top = Cells(cnt, "A").Top
.Height = myRH '//一旦画像の高さをセルの高さに合わせる
'//▼ 画像がセル幅より大きい場合はセル幅に合わせる
If .Width > myRW Then
.Width = myRW
End If
End With
Next mySp
End Sub
初心者でコードの意味すらよく理解できていないため変更方法がわかりません。
何卒よろしくお願い致します。
No.2
- 回答日時:
今のままのコードだと「図形を順番に空いているセルに貼る」ことになりますが、逆に「空いてセルに順番に図形を貼っていく」方が簡単だと思います。
こんな感じです。
Sub sample()
Dim cnt As Long
Dim r As Range
For Each r In Range("A:B")
If r.Value = "" Then
cnt = cnt + 1
If cnt > ActiveSheet.Shapes.Count Then Exit For
With ActiveSheet.Shapes(cnt)
.Left = r.Left
.Top = r.Top
.Height = r.Height
If .Width > r.Width Then .Width = r.Width
End With
End If
Next r
End Sub
サンプルを見つけて利用することを否定する訳ではないのですが、内容を理解しないまま修正を加えると訳わかんなくなっちゃいますよ。
逆に時間がかかったり、いずれ行き詰ったりすることになるので、意味はちゃんと理解した方が良いですよ!!
ありがとうございます!ご提示いただいた内容でも完璧にできました!!
おっしゃる通り、内容を理解できておらずすごく時間がかかってしまって…
どこからどこまでを一つの意味として調べるかもわかっておらず…調べる時間や手作業だと何時間もかかる作業が一瞬ででき大変助かりました。これを機に少しずつ勉強したいと思いました。
No.1ベストアンサー
- 回答日時:
こんにちは!
元の画像の縦・横の比率は無視して、セル全体に配置すれば良いのですね。
A列 → B列 の順に配置してみました。
尚、画像の順はワークシート上に作成(挿入)された順になると思います。
Sub Sample2()
Dim cnt As Long
Dim mySp As Shape
Dim c As Range
For Each c In Range("A:B")
If c = "" Then
cnt = cnt + 1
Set mySp = ActiveSheet.Shapes(cnt)
With mySp
.Top = c.Top
.Left = c.Left
.Height = c.Height
If .Width > c.Width Then
.Width = c.Width
End If
End With
End If
If cnt = ActiveSheet.Shapes.Count Then Exit For
Next c
End Sub
こんなんではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/11 08:33
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セルは大きくさせず、中の文字...
-
エクセルで半角漢字
-
エクセルで画像を透過させて画...
-
エクセルでセルの結合を一部だ...
-
エクセルファイルに _x000D_ と...
-
セル内の一部の文字だけをハイ...
-
JIS水準漢字の選別方法教えてく...
-
エクセルのセル外改行は可能で...
-
excelについて。
-
エクセルの2つのセルを内容も消...
-
エクセルで文書を作成するには…?
-
エクセルの入力規則プルダウン...
-
エクセルで1つのセルにスクロ...
-
エクセルの白黒の反転で困って...
-
エクセル 下線の太さが違う
-
エクセルでセルを上下に結合し...
-
エクセル2013で英単語を折り返...
-
エクセルで右隣のセルより優先...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セル内の一部の文字だけをハイ...
-
マウスポインターが白十字のまま
-
セルは大きくさせず、中の文字...
-
エクセルで画像を透過させて画...
-
Excelでcsvやtxtで保存する時に...
-
エクセルファイルに _x000D_ と...
-
エクセルで1つのセルにスクロ...
-
エクセルの白黒の反転で困って...
-
エクセルでセルを上下に結合し...
-
エクセルで特定の列のセルだけ...
-
セルを結合しても、文字をセル...
-
エクセルの2つのセルを内容も消...
-
エクセル2013で英単語を折り返...
-
エクセルの入力規則プルダウン...
-
エクセルで右隣のセルより優先...
-
エクセル 折り返して全体を表...
-
VBA:結合されたセルに対する「...
-
エクセルのIF関数で、文字が...
おすすめ情報