コンポーネント名?が連番のものを、Forで回して処理したい
6 views (last 30 days)
Show older comments
App Designerを使っていまして、コンポーネント名?が連番のボタンを複数設置しており、一括でEnable処理をしたいと思っています。
連番なのでforでまとめて処理できないかなと思い、以下のように書いてみましたがうまくいきませんでした。
Button_05 ~ Button_25
for i = 5:25
app.(Button_0 + i).Enable = 'on';
end
「+」がダメなのかなと思って「&」とかに変えてみたものの、うまくいきませんでした。

「関数または変数 'Button_0' が認識されません。」
app.Button_05.Enable = 'on';
app.Button_06.Enable = 'on';
app.Button_07.Enable = 'on';
app.Button_08.Enable = 'on';
・・・
のようにずらずら書きたくないです。
名前がバラバラだったら諦めて書くのですが、連番だったら効率化できるんじゃないかと思い質問させていただきました。
どのようになおしたら上記のことが実現可能になるか、for以外でも、上記のことを効率的に処理できる方法あれば、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
0 Comments
Accepted Answer
Atsushi Ueno
on 9 Mar 2023
Edited: Atsushi Ueno
on 9 Mar 2023
"Button_0"の様にString型にすれば、エラー無く期待通りに動きます。(古いリリースでは構造体のフィールドにString型が認められなかった為コメントの様にchar型を使う必要がありますが、新しいリリースではString型でも問題ありません)
for文のイテレータに"i"を使うと、iの中身(数値)がString型に変換される際に複素数(0+1i)と認識される可能性があります。他の変数名に変更する事をお勧めします。
for k = 5:25
app.("Button_0" + k).Enable = "on";
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!