マクロ初心者で詰まってしまっています。バージョンは2016です。
コードを利用して二種類のおなじようなマクロを実行したいです。
①1つの範囲内のセルをダブルクリックで2通→1通→ブランク
②(①とは別の)1つの範囲内のセルをダブルクリックで〇→ブランク
2つめのElseIfに対応するIfがないとのエラーが出てしまうのですが、①②をするにはどこを直せばよいのでしょうか。
なお、同様のことを③(別範囲)として行いたいです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Intersect(Target, Range("D5:D50")) Is Nothing Then Exit Sub
Select Case Target.Value
Case ""
Target.Value = "2通"
Case "2通"
Target.Value = "1通"
Case "1通"
Target.Value = ""
Cancel = True
ElseIf Not Application.Intersect(Target, Range("E5:E50")) Is Nothing Then Exit Sub
Select Case Target.Value
Case ""
Target.Value = "〇"
Case "〇"
Target.Value = ""
End Select
End Sub
よろしくお願いいたします。
No.1
- 回答日時:
>2つめのElseIfに対応するIfがないとのエラーが出てしまうのですが
単に
If Not Application.Intersect(Target, Range("E5:E50")) Is Nothing Then Exit Sub
で良いはずです。
ひょっとしてやりたいことは
If Intersect(Target, Range("E5:E50")) Is Nothing Then Exit Sub
かもしれませんが。
最初の IF
If Intersect(Target, Range("D5:D50")) Is Nothing Then Exit Sub
の一行で完了していますので
ElseIf にする必要はありません。
No.2
- 回答日時:
こんにちは!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("D5:E50")) Is Nothing Then Exit Sub
Cancel = True
With Target
If .Column = 4 Then
Select Case .Value
Case ""
.Value = "2通"
Case "2通"
.Value = "1通"
Case "1通"
.Value = ""
End Select
Else
If .Value = "" Then
.Value = "○"
Else
.Value = ""
End If
End If
End With
End Sub
こんな感じでどうでしょうか?m(_ _)m
No.4ベストアンサー
- 回答日時:
こんばんは。
インデンティング(indenting-行下げ)をきちんとしていないから、エラーが見つからないのでしょうね。縦で揃えるようにして並べ直しますと、間違っていれば、Select --- End, Select, If ---End if が 揃わなくなります。
アドイン・ツールもあるのですが、今、サイトが開かないようです。
Smart Indenter という名前です。
なるべく、オリジナルを生かしています。
'//
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("D5:E50")) Is Nothing Then Exit Sub
If Not Intersect(Target, Range("D5:D50")) Is Nothing Then
Cancel = True
Select Case Target.Value
Case ""
Target.Value = "2通"
Case "2通"
Target.Value = "1通"
Case "1通"
Target.Value = ""
End Select
ElseIf Not Intersect(Target, Range("E5:E50")) Is Nothing Then
Cancel = True
Select Case Target.Value
Case ""
Target.Value = "〇"
Case "〇"
Target.Value = ""
End Select
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルエラー13型が一致しま...
-
実行時エラー 438になった時の...
-
ExcelVBA Range クラスの Page...
-
エクセルVBAで以下のようなコー...
-
プロシージャ名の取得
-
なぜこんな初歩的なVBAのIf文で...
-
エラー1004 PDFの保存ができま...
-
VBAがブレークモードになっ...
-
ADODB.Streamを使用してUTF-8を...
-
INSERT INTOステートメント構文...
-
Outlook.ApplicationをCreateOb...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
VB6 エラー:438 (InputBoxに値)
-
Invalid procedure call or arg...
-
Application.ActiveInspectorで...
-
vbaのvlookup関数エラー原因を...
-
EXCEL VBAマクロ中断でデバッグ...
-
VBAのコードがエラーになっ...
-
VBA 別シートのセルから、文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報
ありがとうございます!
Elself をご指摘どおり、If Intersect〜に修正してみたところ、今度は最終のところでselect caseに対応するend selectがありませんとのエラーが出てしまいました…。根本的になにかちがうでしょうか。。