Excel VBA質問箱 IV

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

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


1782 / 13645 ツリー ←次へ | 前へ→

【71963】オートシェイプの名前の重複 xacronincs 12/5/4(金) 0:07 質問[未読]
【71964】Re:オートシェイプの名前の重複 xacronincs 12/5/4(金) 0:09 発言[未読]
【71965】Re:オートシェイプの名前の重複 hint 12/5/4(金) 9:32 発言[未読]
【71967】Re:オートシェイプの名前の重複 xacronincs 12/5/4(金) 11:35 質問[未読]
【71971】Re:オートシェイプの名前の重複 hint 12/5/4(金) 12:17 発言[未読]
【71972】Re:オートシェイプの名前の重複 xacronincs 12/5/4(金) 15:31 お礼[未読]
【71966】Re:オートシェイプの名前の重複 kanabun 12/5/4(金) 11:27 発言[未読]
【71968】Re:オートシェイプの名前の重複 xacronincs 12/5/4(金) 11:40 質問[未読]
【71970】Re:オートシェイプの名前の重複 UO3 12/5/4(金) 12:00 発言[未読]

【71963】オートシェイプの名前の重複
質問  xacronincs  - 12/5/4(金) 0:07 -

引用なし
パスワード
   For i=10 To 30
Set Shp = Shapes.AddShape(msoShapeOval, i, i, 5, 5)
Shp.Name = "test"
Next

という感じのコードを書いて実行しました。
作成したOvalはすぐ名前を変えてしまいたいという意図です。
すべてのOvalに同じ名前がついてしまったのですが、重複は許されるのでしょうか。ちょっと意外でした。
重複を許さないプロパティはないものでしょうか。重複する名前があると区別がつかなくてエラーになってしまうので困りました。
連休を利用してゲームを作っています。

【71964】Re:オートシェイプの名前の重複
発言  xacronincs  - 12/5/4(金) 0:09 -

引用なし
パスワード
   同じ名前をつけようとしたらエラーになってほしかったです。
エラーがでなかったので名前の重複が発生していることになかなか気づけませんでした。

【71965】Re:オートシェイプの名前の重複
発言  hint  - 12/5/4(金) 9:32 -

引用なし
パスワード
   ▼xacronincs さん:
>同じ名前をつけようとしたらエラーになってほしかったです。
MSさんに対して言って下さい。ここで言われてもw .

名前を連番として振ればよいだけでは?
それはそうと、IDプロパティというのが2010にはあり、
異なる値が割り振られますね。
バージョン依存かもしれませんが、あなたの環境ではどうでしょう。
教えて下さい。

【71966】Re:オートシェイプの名前の重複
発言  kanabun  - 12/5/4(金) 11:27 -

引用なし
パスワード
   ▼xacronincs さん:
>同じ名前をつけようとしたらエラーになってほしかったです。
ですよね
(参考まで)
ht tp://park.geocities.jp/tryvba/excel2007question.html
そこのトピック「オートシェイプの名前の重複について。」
に参考になることが書いてあると思います。

【71967】Re:オートシェイプの名前の重複
質問  xacronincs  - 12/5/4(金) 11:35 -

引用なし
パスワード
   ▼hint さん:
どうもです。

>名前を連番として振ればよいだけでは?
わけあって連番にならない名前のつけかたが避けられず、たまに同一名が発生するようになってしまいました。同一名のときはオートシェイプを作らないようにしたかったです。同一名の敵キャラが出てくるのは困るので。

>それはそうと、IDプロパティというのが2010にはあり、
>異なる値が割り振られますね。
>バージョン依存かもしれませんが、あなたの環境ではどうでしょう。
>教えて下さい。
EXCEL2010を使っています。IDプロパティをググッてみましたがそのようなプロパティの利用例が見つかりませんでしたので、プロパティ名を教えていただけませんか。
2010にしかIDはないのでしょうか。どのバージョンでもIDがないと一意に識別できないというか破たんするように思います。2010未満では非公開ということでしょうか。
できれば97でも同じことをしたいです。
会社ではまだ97を使っていて、社長に遊んでもらうには97でも動くようにしたいです。できなければ社長に遊んでもらうのはまあいいかって感じです。

【71968】Re:オートシェイプの名前の重複
質問  xacronincs  - 12/5/4(金) 11:40 -

引用なし
パスワード
   ▼kanabun さん:
>▼xacronincs さん:
>>同じ名前をつけようとしたらエラーになってほしかったです。
>ですよね
>(参考まで)
>ht tp://park.geocities.jp/tryvba/excel2007question.html
>そこのトピック「オートシェイプの名前の重複について。」
>に参考になることが書いてあると思います。
凄く参考になりましたが、えらく難しい対応が必要だなと思いました。
同じ問題に苦しんだ人がいたのですね。
ちょっと大変そうなのでIDプロパティというのがあるそうなのでまずはそちらに期待しようと思います。

【71970】Re:オートシェイプの名前の重複
発言  UO3  - 12/5/4(金) 12:00 -

引用なし
パスワード
   ▼xacronincs さん:

こんにちは
シート上のシェープの名前の有無チェックは以下でも(だいたいは)可能です。
シェープというより、その名前のオブジェクトが存在するかどうかを判定していますので
Test要注意のようなこともありますが。
なお、私自身は使ったことはありませんが、シェープのIDについては以下のコードにいれてみました。

新規ブックに任意の図形を1つ作成して試してみてください。

Sub Test()
  Dim svn As String
  svn = ActiveSheet.Shapes(1).Name
  MsgBox ActiveSheet.Shapes(1).ID
  
  MsgBox IsObject(Evaluate(svn))
  MsgBox IsObject(Evaluate("Test"))
  
  ActiveSheet.Shapes(1).Name = "Test"
  MsgBox IsObject(Evaluate(svn))
  MsgBox IsObject(Evaluate("Test"))
  
  ActiveSheet.Shapes(1).Name = "TestABC"
  MsgBox IsObject(Evaluate(svn))
  MsgBox IsObject(Evaluate("Test"))
  MsgBox IsObject(Evaluate("TestABC"))
End Sub

Sub Test要注意()
  MsgBox IsObject(Evaluate("A1"))
End Sub

【71971】Re:オートシェイプの名前の重複
発言  hint  - 12/5/4(金) 12:17 -

引用なし
パスワード
   ▼xacronincs さん:
>>名前を連番として振ればよいだけでは?
>わけあって連番にならない名前のつけかたが避けられず、たまに同一名が発生するようになってしまいました。同一名のときはオートシェイプを作らないようにしたかったです。同一名の敵キャラが出てくるのは困るので。
なるほど。

>>それはそうと、IDプロパティというのが2010にはあり、
>>異なる値が割り振られますね。
>>バージョン依存かもしれませんが、あなたの環境ではどうでしょう。
>>教えて下さい。
>EXCEL2010を使っています。IDプロパティをググッてみましたがそのようなプロパティの利用例が見つかりませんでしたので、プロパティ名を教えていただけませんか。
情報ありがとうございます。
プロパティ名は、ShapeオブジェクトのIDプロパティです。(そのままですな)

>2010にしかIDはないのでしょうか。どのバージョンでもIDがないと一意に識別できないというか破たんするように思います。2010未満では非公開ということでしょうか。
2000のヘルプ(サイト)にはなかったので、最近のもののようですね。
どうやら望み薄ですね。
それに、ReadOnlyのプロパティなので、目的には沿わない気がしてきました。
対応テーブルのようなものを常に持っておかないといけないですから。

>できれば97でも同じことをしたいです。
>会社ではまだ97を使っていて、社長に遊んでもらうには97でも動くようにしたいです。できなければ社長に遊んでもらうのはまあいいかって感じです。
社長さんにはバージョンアップを勧めてくださいw
もう15年も前ですよ、と。

【71972】Re:オートシェイプの名前の重複
お礼  xacronincs  - 12/5/4(金) 15:31 -

引用なし
パスワード
   ▼hint さん:
助言ありがとうございます。
idプロパティは書き換えできないみたいですが、重複しない性質を利用してなんとかしてみたいと思います。

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