Excel VBA質問箱 IV

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

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


33098 / 76738 ←次へ | 前へ→

【48864】Re:別のシートのデータを利用
発言  ichinose  - 07/5/12(土) 17:55 -

引用なし
パスワード
   ▼シスアド さん:
こんにちは。

>目的としては、単独で動作させるのが目的ではないんですけど
>最終的には、データがBK2だけではなく縦にBK3BK4・・・と複数入れて
>BK2は、sheet3,BK3はsheet4・・・というふうに実行結果を出力させていく
>その時のsheetはデータがある数だけ作られるというようにしたいのですが・・・
>意味が伝わりましたかね?わからなければいってください。

はっきりではありませんが、何となくならわかります・・・が、

>>下記のように、セルBK2に0.1.2.3のいづれかが入力された場合Caseによって条件があ>>るマクロを作成しました。
>>これを同じSheetのリストという名前のセルBK2ではなく、データという名前のSheetの>>セルO2に値が入力されており、それを使用し、リストという名前に出力したいのですが>>どうしたらよいでしょうか?

最初の投稿の↑の仕様とは違いますね!!

マクロ実行前のシート構成

マクロを含むブックには、
  xxxxというシート名のシート
  yyyyというシート名のシート(複数あるならすべて記述)
  ・
  ・

というようにこんなところから 正確に記述してください。

特に今回は、シートを追加するのですよね?
だったら、どこに追加するかも正確に記述してください。


マクロの入力データに相当するデータの情報も正確に記述してください。
(まあ、これは、ある程度は記述されていましたが・・・)


このマクロの入力データに相当するデータは、
  シートxxxxというシート名のシートのセルBK2から決まった行数では
  ありませんが、入力されています。

    A   B ・・・・ BK
 1             作成位置指示
 2              1
 3              2
 4              0
 5              3
 6              1
 7              2

一例ですが、上記のように入力されています。
行数は、上記の例ではセルBK7までですが、一定ではありません。
3行の場合もあれば、20行の場合もあります。

シートxxxxのセルBK2以下のセルの値を基に
オートシェープの円を作成します。


作成するオートシェープの円の作成位置がセルの値によって違います。

又、セルBK2の値で作成するオートシェープの円は、

このシートxxxxに作成するのではなく、
新たに作成するシート(マクロで作成する)に作成します。

同様にBK3の値によって、作成するオートシェープの円も
別に新規作成されたシート上に作成します。

このようにシートxxxxのセルBK2以下にオートシェープの円の作成指示データが
ある限り新規にシートを作成し、
その作成されたシート上に作成指示データで示される位置に
オートシェープの円を作成します。

それぞれのシートに作成するオートシェープの円の作成位置は、

 作成指示データ   シートのLeft、シートのTop
    0        159.75    29.25
    1        249.75    157.25
    2        343.75    29.25
    3        432.75    29.25


上記のようになっています。


とこのような仕様でよいのですか?

だとしたら、シスアド さんこの程度の仕様の提示はしなければなりません。


このような仕様だとして・・・・。

・新規ブックにシートを1枚のみにしてください。
 (既定で、3枚作成されていても削除して1枚にしてください)

・この1枚シートのシート名はSheet1としてください。
 このシートのセルBK2以降に円の作成指示番号が入っているとします。
 
標準モジュールに
'===================================================================
Sub sample()
  Dim ok As Boolean
  Dim o_left As Double
  Dim o_top As Double
  Dim crng As Range
  Dim c As Range
  With Worksheets("sheet1")
    For Each c In .Range("bk2", .Cells(.Rows.Count, "bk").End(xlUp))
     ok = True
     Select Case c.Value
      Case 0
        o_left = 159.75
        o_top = 29.25
      Case 1
        o_left = 249.75
        o_top = 157.25
      Case 2
        o_left = 343.75
        o_top = 29.25
      Case 3
        o_left = 432.75
        o_top = 29.25
      Case Else
        ok = False
      End Select
     If ok = True Then
       With Worksheets.Add(after:=Worksheets(Worksheets.Count))
         .Name = "sheet" & c.Row
         DoEvents
         With .Shapes.AddShape(msoShapeOval, o_left, o_top, 15.75, 15.75)
           .Fill.Visible = msoFalse
           End With
         End With
       End If
     Next
    End With
End Sub


記述したようなシートの準備が出来たら、
上記のSampleを実行してみてください。

セルBk2から、BK7に上述のようなデータが入力されていた場合、

Sheet2からSheet7というシートが追加作成され、それぞれのシートに
指示データに対応した位置に円が作成されます。
0 hits

【48805】別のシートのデータを利用 シスアド 07/5/9(水) 22:05 質問
【48807】Re:別のシートのデータを利用 ichinose 07/5/10(木) 7:38 発言
【48827】Re:別のシートのデータを利用 シスアド 07/5/10(木) 19:09 発言
【48843】Re:別のシートのデータを利用 ichinose 07/5/11(金) 7:31 発言
【48857】Re:別のシートのデータを利用 シスアド 07/5/11(金) 23:16 発言
【48864】Re:別のシートのデータを利用 ichinose 07/5/12(土) 17:55 発言
【48871】Re:別のシートのデータを利用 シスアド 07/5/13(日) 20:00 お礼
【48874】Re:別のシートのデータを利用 シスアド 07/5/13(日) 21:02 質問
【48878】Re:別のシートのデータを利用 ichinose 07/5/14(月) 8:59 発言
【48941】Re:別のシートのデータを利用 シスアド 07/5/16(水) 19:27 お礼

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