Excel VBA質問箱 IV

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

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


33101 / 76734 ←次へ | 前へ→

【48857】Re:別のシートのデータを利用
発言  シスアド  - 07/5/11(金) 23:16 -

引用なし
パスワード
   ご指摘ありがとうございます。

目的としては、単独で動作させるのが目的ではないんですけど
最終的には、データが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
2 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 お礼

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