ショボ短歌会

前のスレッドで、めぐみんさんに、PowerpointVBAを使って、特定文字列を含むテキストボックスを全削除するPowerpointVBAコードを下記の通り教えていただきました。
教えていただいたコードにつき、2件質問&コメントさせてください。


1.Dim i As Integer '★忘れてた? ですが、経験上、カウンタを入れる変数iを定義しなくてもコードは動くので、今回もあえて定義しませんでした。今回も同様でした。PowerpointVBAの仕様は未確認ですが。。。

2.私は今までIfとEnd Ifはセットと思い込んでいたので、

If InStr(s.TextFrame.TextRange.Text, "hogehoge") > 0 Then s.delete '★変更箇所 

のように、End Ifの無いIf文があることに驚きました。
どのような場合に、End Ifの無いIf文が発生すると考えればよろしいのでしょうか?


--<start of code>----
Sub delete()
Dim s As Shape 'sはshapeオブジェクトを入れる変数
Dim c As Collection 'cはコレクション
Dim start_slide As Integer 'start_slideはスライド番号を入れる変数
Dim i As Integer '★忘れてた?

start_slide = 1
For i = start_slide To ActivePresentation.Slides.Count
'If i = 254 Then
' GoTo continue
'End If
Set c = New Collection
For Each s In ActivePresentation.Slides(i).Shapes '変数sにアクティブスライド番号のすべてのshapeオブジェクトを入れる。
c.Add s
Next
For Each s In c
If s.Type = msoTextBox Then
If InStr(s.TextFrame.TextRange.Text, "hogehoge") > 0 Then s.delete '★変更箇所
End If
Next
'continue:
Next
'MsgBox "the process is finished."
End Sub

--<start of code>----

A 回答 (1件)

1. VB(A) は定義は不要です。

 間違いを防ぐためにOption explicitとして、必ず必要とさせることもできます。
2. If A=B then C=D などと、条件成立したときの動作を同一行に書いた場合はend ifはいりません。
    • good
    • 0
この回答へのお礼

VB(A) は定義は不要です。
⇒やはり、そうだったのですね。。。
If A=B then C=D などと、条件成立したときの動作を同一行に書いた場合はend ifはいりません。
⇒なるほど、わかりました。

お礼日時:2019/12/19 15:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!