1

すべてのボタン (ワークシートから別のワークシートにコピーされたもの) の名前を「ボタン」と番号に変更する非常に単純な手順を実行しようとしています。

どういうわけか、最初の 2 つを除くすべてのボタン (非アクティブ x) の名前が変更されます。

私が書いたコードは次のとおりです。

Dim button As button
i = 1
For Each button In ws.Buttons
    button.Name = "Button " & i
    i = i + 1
Next button
4

2 に答える 2

1

列挙中にコレクションを変更することは、多くの場合、悪い考えです。名前の変更はfor each列挙子にも影響するように見えるため、一部のボタンがスキップされます。

次のいずれかを試してください。

  • ではなく、インデックスでアクセスButtonsしますFor Each
  • ボタンへのすべての参照を配列にコピーし (つまり、コレクションのスナップショットを取得)、名前を変更して配列をループします。
于 2013-06-11T10:55:09.190 に答える
0

また、アクティブなワークシートのすべての (NON-active x) ボタンの名前を変更したいと考えています。ボタンが追加、削除、変更などされると、コード名が「ボタン 3」と「ボタン 6」になり、それ以外の名前がなくなる可能性があるため、インデックスでアクセスしたいと思います。したがって、コード名によるアクセスは信頼できません。インデックスを介してボタンのキャプションを変更する方法に関する確実な情報は、非常に役立ちます。本当にありがとう!

于 2015-08-19T16:09:11.687 に答える