|    | 
     ▼シスアド さん: 
おはようございます。 
 
>下記のように、セルBK2に0.1.2.3のいづれかが入力された場合Caseによって条件があるマクロを作成しました。 
>これを同じSheetのリストという名前のセルBK2ではなく、データという名前のSheetのセルO2に値が入力されており、それを使用し、リストという名前に出力したいのですがどうしたらよいでしょうか? 
>補足をお願いします。 
 
>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 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 
 | 
     
    
   |