Excel VBA質問箱 IV

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

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


12963 / 13644 ツリー ←次へ | 前へ→

【7578】前回の続き 鼻毛カッター 03/9/8(月) 22:34 質問
【7579】Re:前回の続き 鼻毛カッター 03/9/8(月) 22:39 質問
【7581】Re:前回の続き INA 03/9/8(月) 23:26 回答
【7586】Re:前回の続き INA 03/9/9(火) 8:39 回答
【7636】Re:前回の続き 鼻毛カッター 03/9/10(水) 21:01 質問
【7648】Re:前回の続き INA 03/9/11(木) 11:11 回答
【7688】Re:前回の続き 鼻毛カッター 03/9/11(木) 20:52 質問
【7692】Re:前回の続き INA 03/9/11(木) 22:23 回答
【7693】Re:前回の続き 鼻毛カッター 03/9/11(木) 23:11 質問
【7700】Re:前回の続き INA 03/9/12(金) 9:46 回答
【7739】Re:前回の続き 鼻毛カッター 03/9/16(火) 16:59 お礼

【7578】前回の続き
質問  鼻毛カッター  - 03/9/8(月) 22:34 -

引用なし
パスワード
   こんばんわ。
前回のオプションボタンを使い丸をつけるというものなのですが、そのときは大丈夫だと思っていたのですが、確認作業の中で、行ってみたところ、ほかの関係ないオートシェイプの丸までも消えてしまいました。
どのようにすれば、ほかの関係ないオートシェイプの丸を消さないで済むのでしょうか?
お願いいたします。

【7579】Re:前回の続き
質問  鼻毛カッター  - 03/9/8(月) 22:39 -

引用なし
パスワード
   たびたびすいません。
前回はINAさんのお返事を参考にしました。

Private Sub OptionButton1_Click()

Dim MyShape As Shape
  
  For Each MyShape In ActiveSheet.Shapes
    If MyShape.Type = msoAutoShape Then
      MyShape.Delete
    End If
  Next

ActiveSheet.Shapes.AddShape(msoShapeOval, OptionButton1.Left + 50, OptionButton1.Top - 25, 100#, 100).Select

End Sub

'−−−−−−−−−−−−−−−−−−−−−−−−−−−

Private Sub OptionButton2_Click()

Dim MyShape As Shape
  
  For Each MyShape In ActiveSheet.Shapes
    If MyShape.Type = msoAutoShape Then
      MyShape.Delete
    End If
  Next
  
ActiveSheet.Shapes.AddShape(msoShapeOval, OptionButton2.Left + 50, OptionButton2.Top - 25, 100#, 100).Select

End Sub

【7581】Re:前回の続き
回答  INA  - 03/9/8(月) 23:26 -

引用なし
パスワード
   オートシェイプは全部でどれくらい使っていますか?
このマクロは、既存のオートシェイプ(オーバル)を、
すべて削除して新しい○を付けています。
OptionButtonといった使用方法上、この考え方で問題はないのですが、
その他にも○のオートシェイプがあると、いっしょに消えてしまいますので、
考え直さないといけません。

【7586】Re:前回の続き
回答  INA E-MAIL  - 03/9/9(火) 8:39 -

引用なし
パスワード
   追加です。

あと既存のオートシェイプの使用方法も教えて下さい。
まとめて考え直さないといけませんので・・

【7636】Re:前回の続き
質問  鼻毛カッター  - 03/9/10(水) 21:01 -

引用なし
パスワード
   こんばんわ。遅くなりすみませんでした。
消えてしまうというオーバルは、30個ぐらいあります。
使用方法は、同じフォームにチェックボックスがあり、チェックをつけるとオーバルがつき、はずすと消えるというものです。
チェックボックスの方のオーバルは、自分で描き名前をつけて、表示・非表示にしています。
コードはこのようなかたちです。

Private Sub CheckBox1_Click()

  Dim objOval   As Shape      'Shape

  'Shapeの有無チェック
On Error Resume Next
  Set objOval = ActiveSheet.Shapes("まるいち")
On Error GoTo 0

  
  '表示/非表示制御
  objOval.Visible = IIf(Me.CheckBox1.Value, msoTrue, msoFalse)

  'オブジェクト開放
  Set objOval = Nothing

End Sub

【7648】Re:前回の続き
回答  INA  - 03/9/11(木) 11:11 -

引用なし
パスワード
   >使用方法は、同じフォームにチェックボックスがあり、
>チェックをつけるとオーバルがつき、はずすと消えるというものです。
>チェックボックスの方のオーバルは、自分で描き名前をつけて、
>表示・非表示にしています。

いまは全てのオーバルが削除するようになっていますので、
ここまで出来ているのであれば、オプションボタンも同様に
オーバルに名前を付けて、表示・非表示すれば良いのではないでしょうか?

【7688】Re:前回の続き
質問  鼻毛カッター  - 03/9/11(木) 20:52 -

引用なし
パスワード
   こんばんわ。
組み合わせてはみたのですが、表示・非表示がうまくいきません。間違っている点がございましたら、ご指摘お願いいたします。


Private Sub OptionButton1_Click()
  Dim objOval   As Shape      'Shape

  'Shapeの有無チェック
On Error Resume Next
  Set objOval = ActiveSheet.Shapes("あああ")
On Error GoTo 0

  'Shapeが無ければ作成
  If objOval Is Nothing Then
    Set objOval = ActiveSheet.Shapes.AddShape(msoShapeOval, 200, 200, 10, 10)
    objOval.Fill.Visible = msoFalse
    objOval.Name = "あああ"
  End If

  '表示/非表示制御
  objOval.Visible = IIf(Me.OptionButton1.Value, msoTrue, msoFalse)

  'オブジェクト開放
  Set objOval = Nothing
End Sub

Private Sub OptionButton2_Click()
  Dim objOval   As Shape      'Shape

  'Shapeの有無チェック
On Error Resume Next
  Set objOval = ActiveSheet.Shapes("いいい")
On Error GoTo 0

  'Shapeが無ければ作成
  If objOval Is Nothing Then
    Set objOval = ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 10, 10)
    objOval.Fill.Visible = msoFalse
    objOval.Name = "いいい"
  End If

  '表示/非表示制御
  objOval.Visible = IIf(Me.OptionButton2.Value, msoTrue, msoFalse)

  'オブジェクト開放
  Set objOval = Nothing
End Sub

【7692】Re:前回の続き
回答  INA  - 03/9/11(木) 22:23 -

引用なし
パスワード
   チェックボックスと同じように最初から作成しておいて、
表示/非表示だけ切り替えるのでは、ダメなのでしょうか?

この処理だとオーバルの作成からする事もないように思えますが・・?

【7693】Re:前回の続き
質問  鼻毛カッター  - 03/9/11(木) 23:11 -

引用なし
パスワード
   まぁ・・・そう言われるとそうなのですが・・・
でも、どちらかに絞ってやってみたのですが、チェックを1から2へ変更(その逆も)しても、非表示ならないで、オーバルがついたままになっています。なぜなのでしょうか?
ウインドウズプロパティなどの設定なのでしょうか?
それとも、やり方を変えてオーバルを非表示にしないで、移動させたほうがよろしいのでしょうか?

【7700】Re:前回の続き
回答  INA  - 03/9/12(金) 9:46 -

引用なし
パスワード
   これでいかがでしょう?

Private Sub OptionButton1_Click()
Dim objOval As Shape
Dim x As Shape

For Each x In ActiveSheet.Shapes
  If x.Name = "いいい" Then
    x.Delete
  End If
Next x
  
  If objOval Is Nothing Then
    ActiveSheet.Shapes.AddShape(msoShapeOval, 200, 200, 10, 10).Select
    Selection.Name = "あああ"
    ActiveSheet.Shapes("あああ").Fill.Visible = msoFalse
  End If
  
Set objOval = Nothing

End Sub


Private Sub OptionButton2_Click()
Dim objOval As Shape
Dim x As Shape

For Each x In ActiveSheet.Shapes
  If x.Name = "あああ" Then
    x.Delete
  End If
Next x

  If objOval Is Nothing Then
    ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 10, 10).Select
    Selection.Name = "いいい"
    ActiveSheet.Shapes("いいい").Fill.Visible = msoFalse
  End If

Set objOval = Nothing

End Sub

【7739】Re:前回の続き
お礼  鼻毛カッター  - 03/9/16(火) 16:59 -

引用なし
パスワード
   INAさんありがとうございます。
いったんはオーバルを移動させることはできたので、それでやっていたのですが、やはりこちらのほうが全然よかったので、こちらを使用します。
どうもありがとうございました。

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