質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

1回答

1625閲覧

【Excel VBA】ifブロックに対応するend ifがありません

kota1810

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2023/01/17 17:14

編集2023/01/17 17:16

概要

Excel VBAのIF文のコンパイルエラーについて質問します。

IF文を構文通り記述したつもりですが、コンパイルエラーが発生しました。
以下のソースコード内で文法エラーとなる箇所はありますか?

なお、私は初めてVBAを触っているため、VBA特有の文法についての知識が乏しいです。
(普段は主にC言語を使用しています)

実現したいこと

①エクセルシート内の横7マス×縦9マスの結合されたセルをダブルクリックすると、ファイルを開くダイアログが表示され、縦横比率を維持せずに結合されたセルの大きさに合わせて画像が挿入される。
②エクセルシート内の横11マス×縦14マスの結合されたセルをダブルクリックすると、ファイルを開くダイアログが表示され、縦横比率を維持したまま画像が挿入される。

発生したエラーメッセージ

イメージ説明

該当のソースコード

VBA

1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) 2Dim myF As Variant 3Cancel = True 4 5If (Target.Columns.Count = 7 And Target.Rows.Count = 9) Then 6 7 myF = Application.GetOpenFilename _ 8 ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) 9 If myF <> False Then 10 11 With ActiveSheet.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _ 12 SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _ 13 Width:=-1, Height:=-1) 14 15 '==================ここから=========================================== 16 .LockAspectRatio = False '縦横比率を維持しない 17 .Width = Target.Width 18 .Height = Target.Height 19 '==================ここまで=========================================== 20 21 '===============中央へ調整 22 .Top = Target.Top + Target.Height / 2 - .Height / 2 23 .Left = Target.Left + Target.Width / 2 - .Width / 2 24 25 End With 26 27ElseIf (Target.Columns.Count = 11 And Target.Rows.Count = 14) Then 28 29 myF = Application.GetOpenFilename _ 30 ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) 31 If myF <> False Then 32 33 With ActiveSheet.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _ 34 SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _ 35 Width:=-1, Height:=-1) 36 37 '===============中央へ調整 38 .Top = Target.Top + Target.Height / 2 - .Height / 2 39 .Left = Target.Left + Target.Width / 2 - .Width / 2 40 41 End With 42 43Else 44 45 '===============何もしない 46 47End If 48 49End Sub 50 51

補足

参考にしたサイト:https://kenchik.info/2021/07/01/excel_autopic
使用ソフト:Office Home and Business 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • 9行目: If myF <> False Then
  • 31行目: If myF <> False Then

Ifに対応するEnd Ifがありません。

インデントを入れると、今回のような構文エラーに気づきやすくなります。

VBAのインデントについて|VBA技術解説

投稿2023/01/17 17:32

jhashimoto

総合スコア838

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kota1810

2023/01/17 17:57

夜分にも拘わらず、すぐに回答いただきありがとうございます。 無事解決しました。 また、参考URLまで付けていただき誠に恐れ入ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問