Excel VBA質問箱 IV

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

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


38987 / 76732 ←次へ | 前へ→

【42866】Re:後者の場合
回答  りん E-MAIL  - 06/9/23(土) 16:21 -

引用なし
パスワード
   てるてる さん、こんにちわ。

>>Sub test2()
>>  Dim sh As Shape, tf As Boolean
tfはブール(Boolean)型の変数です。
(型の詳細はヘルプを見てね)
シート上の図形をチェックする
>>  For Each sh In Application.ActiveSheet.Shapes
フォームコントロールかどうかで分岐
>>   If sh.Type = msoFormControl Then
フォームコントロールの場合は種類をチェックする
>>     tf = (sh.FormControlType = xlSpinner) 'スピンボタンか否か

カッコ内の、 sh.FormControlType = xlSpinner
という等式が成り立つときは、変数tfはTrueになり、
成り立たないとき(スピンボタンじゃないとき)はtfはFalseになります。
それ以外の時はスピンボタンではありえないのでtfは常にFalseであり、分岐の終了後FalseだったShapeを削除しています。

というわけで、
>この行は、tfにスピンボタンを格納?しているのではないかと思うのですが、
>カッコ内で ”=”をするのが何故なのか
tfにスピンボタンを格納しているのではなく、カッコ内の等式が成り立ったかどうかの値を格納しているのです。

変数の内容に関しては、メッセージボックスで中身を見てもらうのが早いかな。
Sub test2()
  Dim sh As Shape, tf As Boolean
  '
  For Each sh In Application.ActiveSheet.Shapes
   If sh.Type = msoFormControl Then
     tf = (sh.FormControlType = xlSpinner) 'スピンボタンか否か
   Else
     tf = False '削除
   End If
   MsgBox tf, vbInformation, sh.Name
   If tf = False Then sh.Delete
  Next
End Sub
1 hits

【42859】削除の方法 てるてる 06/9/23(土) 14:48 質問
【42861】Re:削除の方法 りん 06/9/23(土) 15:30 回答
【42864】後者の場合 てるてる 06/9/23(土) 16:04 発言
【42865】Re:後者の場合 Kein 06/9/23(土) 16:17 回答
【42868】Re:後者の場合 てるてる 06/9/23(土) 16:36 お礼
【42866】Re:後者の場合 りん 06/9/23(土) 16:21 回答
【42869】Re:後者の場合 てるてる 06/9/23(土) 16:38 お礼

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