|
ご指摘ありがとうございます。
目的としては、単独で動作させるのが目的ではないんですけど
最終的には、データがBK2だけではなく縦にBK3BK4・・・と複数入れて
BK2は、sheet3,BK3はsheet4・・・というふうに実行結果を出力させていく
その時のsheetはデータがある数だけ作られるというようにしたいのですが・・・
意味が伝わりましたかね?わからなければいってください。
▼ichinose さん:
>▼シスアド さん:
>おはようございます。
>
>>
>>正常に動作しないということですが、
>>もしよろしければ教えてもらえないでしょうか?
>何を「教える」のですか?
>
>「正常に動作しない のは何故か?」
>
>ということですか?
>
>ならば、実行してみればわかると思いますが、
>
>コンパルエラー(文法的に正しくない記述がいくつかあります)
>
>となって動作しませんよね?
>>>sub()
>>>a=0
>>>Dim c As Range
>>>
>>>For Each c ln Range("BK2")
>>>Select Case c.Value
>>>
>>>Case a
>>> ActiveSheets.Shapes.AddShape(msoShapeOval,159.75,29.25,15.75).Select
>>> Selection.ShapeRange.Fill.Visible=msoFalse
>>>Case 1
>>>ActiveSheets.Shapes.AddShape(msoShapeOval,249.75,157.25,15.75).Select
>>> Selection.ShapeRange.Fill.Visible=msoFalse
>>>Case 2
>>>ActiveSheets.Shapes.AddShape(msoShapeOval,343.75,29.25,15.75).Select
>>> Selection.ShapeRange.Fill.Visible=msoFalse
>>>Case 3
>>>ActiveSheets.Shapes.AddShape(msoShapeOval,432.75,29.25,15.75).Select
>>> Selection.ShapeRange.Fill.Visible=msoFalse
>>>Case Else
>>>MsgBox "データが空欄です"
>>>End Select
>>>Next
>>>End Sub
>
>
>Sub sample() 'プロシジャーの名前を付けないとエラーになります。文法です
> Dim a As Long 'データ宣言すること
> Dim c As Range
> a = 0
>'セルBK2単独の値だけで処理させるのですから、For each文は要らないですよね?
> Set c = Range("bk2")
> Select Case c.Value
> Case a
> ActiveSheet.Shapes.AddShape( _
> msoShapeOval, 159.75, 29.25, 15.75, 15.75).Select
>'Activesheetsというプロパティはありませんし、
>'Addshapeメソッドのオプションの数が足りません
> Selection.ShapeRange.Fill.Visible = msoFalse
> Case 1
> ActiveSheet.Shapes.AddShape( _
> msoShapeOval, 249.75, 157.25, 15.75, 15.75).Select
> Selection.ShapeRange.Fill.Visible = msoFalse
> Case 2
> ActiveSheet.Shapes.AddShape( _
> msoShapeOval, 343.75, 29.25, 15.75, 15.75).Select
> Selection.ShapeRange.Fill.Visible = msoFalse
> Case 3
> ActiveSheet.Shapes.AddShape( _
> msoShapeOval, 432.75, 29.25, 15.75, 15.75).Select
> Selection.ShapeRange.Fill.Visible = msoFalse
> Case Else
> MsgBox "データが無効です"
>'セルBK2は空欄でもこのケースには入ってきませんよ!!
> End Select
>End Sub
>
>と出来るかぎりシスアド さんのコードを残すように修正しました。
>元コードと比較してください。
>
>
>私が提示したコードも試して見てください。
>
>シート名が正しければ、作動するはずですよ!!
>
>
>>>何故? という箇所がありますが、深い理由があるのだろうと
>>>解釈し、そのまま残しました。
>>>
>>>Sub sample()
>>> Dim a As Long
>>> Dim ok As Boolean
>>> Dim o_left As Double
>>> Dim o_top As Double
>>> Dim c As Range
>>> Set c = Worksheets("データ").Range("o2")
>>> a = 0
>>> ok = True
>>> Select Case c.Value
>>> Case ""
>>> MsgBox "データが空欄です"
>>> ok = False
>>> Case a
>>> 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
>>> MsgBox "データが無効です"
>>> ok = False
>>> End Select
>>> If ok = True Then
>>> With Worksheets("リスト").Shapes. _
>>> AddShape(msoShapeOval, o_left, o_top, 15.75, 15.75)
>>> .Parent.Select
>>> .Fill.Visible = msoFalse
>>> .Select
>>> End With
>>> End If
>>>End Sub
|
|