前提・実現したいこと
リスト表シートのシートパターン(A7以降)行毎に、シートを作成して対象シート内にオートシェイプを作成
させたいです。
<条件>
・作成シートはカラオケシートをコピーして、シート名をシートパターン名に変更
・シートパターン種類は3種類(正面2、側面4、平面6)
・同一シートがある場合は、シートを作成せずに同一シートへオートシェイプのみ作成
例.添付画像を実行した場合、8、10、12行はシートは作成されず、対象シートへオートシェイプのみ作成
VBA
1Sub シート作成andオートシェイプ作成() 2 Dim i As Integer '行カウンタ 3 Dim k As Integer '数量カウンタ 4 Dim o As Long 'シートカウンタ 5 Dim list As Worksheet 'リスト表 6 Dim Tl As Worksheet 'カラオケシート 7 Dim zukei As Shape '図形 8 Set list = Worksheets("リスト表") 9 Set Tl = Worksheets("カラオケ") 10 11 lastR = list.Cells(Rows.Count, "B").End(xlUp).Row 'シートリスト B列のセル入力済最終行を定義 12 lastC = list.Cells(2, Columns.Count).End(xlToLeft).Column 'シートリスト B列のセル入力済最終行を定義 13 14 For i = 7 To lastR '7行目から1行ずつ処理 15 16 For o = ActiveSheet.Index + 1 To Sheets.Count '同一シート検索 17 If Sheets(o).Name Like Cells(i, 1).Value Then 18 X = Cells(i, 3).Value '横 19 Y = Cells(i, 4).Value ' 縦 20 Z = Cells(i, 5).Value ' 品名 21 kazu = ActiveSheet.Cells(i, 6) 22 iro = ActiveSheet.Cells(i, 7) 23 For k = 1 To kazu 24 25 Set zukei = Shapes _ 26 .AddShape(msoShapeRectangle, 800, 30, X * 1.95, Y * 1.95) '正面2シートへ図形作成 27 28 With zukei 29 .TextFrame.Characters.Text = X & "×" & Y & vbCrLf & Z '図形へテキスト入力 30 .TextFrame.Characters.Font.Size = 15 'テキスト文字フォント変更 31 .TextFrame.Characters.Font.ColorIndex = 1 'テキスト文字色変更 32 .TextFrame.HorizontalAlignment = xlHAlignCenter 'テキスト文字水平中央 33 .TextFrame.VerticalAlignment = xlVAlignCenter 'テキスト文字垂直中央 34 End With 35 36 Next k 37 38 Else 39 Tl.Copy after:=Worksheets(Worksheets.Count) 40 ActiveSheet.Name = list.Cells(i, 1).Value 41 42 End If 43 44 Next o 45 46 Next i 47 48 End Sub
試したこと
・シート名を重複させず、作成しようと試みたのですができませんでした。
・構文も分かりませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー