[[20091110235903]] 『エクセル・フォームのボタンについて』(Rin) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセル・フォームのボタンについて』(Rin)

 エクセルのシート(Sheet1)にフォームからボタン、四角のオートシェイプ、
 円のオートシェイプを貼り付けています。

 シート(Sheet1)をコピーしてシートを新しく追加した時に、 
 ボタンと四角のオートシェイプのみを削除したいのですが、可能でしょうか? 
 (シートをコピーする時に何故かボタンのみが、ボタン1がボタン2と 
 カウントアップしているらしく名前を指定して消すことができないでいます。)

 また、ボタンやオートシェイプに固定の名前をつけたり、 既につけられている 
 名前を取得して表示することはできますでしょうか? 
 (Excel2003を使用しております) 

 よろしくお願いいたします。


 >シート(Sheet1)をコピーしてシートを新しく追加した時に、 
 >ボタンと四角のオートシェイプのみを削除したいのですが、可能でしょうか? 

 そのボタンや四角や円があるシートをアクティブにした状態で以下のコード(標準モジュール)を実行してください。

 Sub test()
    With ActiveSheet
       .Copy after:=Worksheets(Sheets.Count)
    End With
    With ActiveSheet
       .Buttons.Delete
       .Rectangles.Delete
    End With
 End Sub

 アクティブシートを対象ブックの最右端にコピーし、コピーされたシートのボタンと四角を削除します

 >また、ボタンやオートシェイプに固定の名前をつけたり、 既につけられている 
 >名前を取得して表示することはできますでしょうか? 

 Sub test1()
    Dim shp As Shape
    With ActiveSheet
       For Each shp In ActiveSheet.Shapes
          If shp.Type = msoAutoShape Then
             If shp.AutoShapeType = msoShapeRectangle Then
                MsgBox "「  " & shp.Name & "  」は、オートシェイプの四角です"
             ElseIf shp.AutoShapeType = msoShapeOval Then
                MsgBox "「  " & shp.Name & "  」は、オートシェイプの円(楕円)です"
             Else
                MsgBox "「  " & shp.Name & "  」は、オートシェイプです"
             End If

          ElseIf shp.Type = msoFormControl Then
             If shp.FormControlType = xlButtonControl Then
                MsgBox "「  " & shp.Name & "  」は、フォームコントロールのボタンです"
             Else
                MsgBox "「  " & shp.Name & "  」は、フォームコントロールです"
             End If

          End If
       Next
    End With
 End Sub

 名前の表示は、このように Nameというプロパティを使えば、取得も設定も可能です。

 まずは、試してみて、それから研究してください。

 ichinose


ichinose様

 丁寧なご回答ありがとうございます。

 やってみた所、うまくできました。
 ここ2、3日ずっと気になって試していたのですが、うまくいかず
 ほとほと困っていたので、解決してとてもすっきりしました。

 ありがとうございました。

 (Rin)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.