|
▼シスアド さん:
おはようございます。
>
>正常に動作しないということですが、
>もしよろしければ教えてもらえないでしょうか?
何を「教える」のですか?
「正常に動作しない のは何故か?」
ということですか?
ならば、実行してみればわかると思いますが、
コンパルエラー(文法的に正しくない記述がいくつかあります)
となって動作しませんよね?
>>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
|
|