![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
マクロ初心者の為、分かり難い質問でしたら、大変申し訳ございませんが
よろしくお願い致します。(エクセル2010)
A列に”完了”若しくは、”キャンセル”を入力した場合、当該行が保護され
AA列に”重複”が表示される(COUNTIF関数)場合に下記のマクロで
実行しようとした場合にエラー(実行時エラー’13’: 型が一致しません。)
が発生します。
---------------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, rng As Range, Dependent As Range
Set rng = Intersect(Target, Columns(1))
If Not rng Is Nothing Then
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
End If
For Each r In rng
If r.Value = "完了" Or r.Value = "キャンセル" Then
r.Offset(0, 1).Resize(1, 26).Locked = True
Else
r.Offset(0, 1).Resize(1, 26).Locked = False
End If
Next r
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
End If
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
End If
On Error Resume Next
Set Dependent = Intersect(Target.Dependents, Columns("AA"))
On Error GoTo 0
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
If Dependent Is Nothing Then Exit Sub
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
End If
If Dependent.Value = "重複" Then MsgBox "「項目1の重複」を確認して下さい!", 48
If ActiveSheet.ProtectContents = False Then
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
End If
End Sub
----------------------------------------------------------------------------------------------------
「If Dependent.Value = "重複" Then」の部分が黄色になります。
また、異なる項目の重複のチェックを、AB列でも行っているのですが、異なる2列での
判定結果を、それぞれメッセージボックスで表示するには、どのようにしたらよろしいでしょうか?
以上、お手数をお掛けしますが、よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> Set Dependent = Intersect(Target.Dependents, Columns("AA"))
> If Dependent.Value = "重複" Then
If文の条件はDependentが1個のセルであることを前提としていますが
Intersect( )の結果は複数のセルを返す場合もあります。
なので、プログラムの前半の様にFor Eachを使用してセルを1個ずつ確認すれば良いです。
> また、異なる項目の重複のチェックを、AB列でも行っているのですが、異なる2列での
> 判定結果を、それぞれメッセージボックスで表示するには、どのようにしたらよろしいでしょうか?
AA列に対して行ったことを、AB列に対しても行えば良いですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
EXCELで変数をペーストしたい
-
【VBA】指定したセルと同じ値で...
-
TODAY()で設定したセルの日付...
-
Excelで指定した日付から過去の...
-
ExcelVBAを使って、値...
-
Excelのプルダウンで2列分の情...
-
Excel VBAで、 ヘッダーへのセ...
-
Excle VBA Findメソッドについて
-
VBA初心者です。 VBAで行単位で...
-
ExcelVBAのマクロについて。
-
【GAS】特定文字の削除について
-
エクセルVBAで結合セルの真ん中...
-
任意フォルダから画像をすべて...
-
VBA初心者です。結合セルを保持...
-
ExcelVBA データを消去すると罫...
-
Excel ユーザーフォームをモー...
-
EXCELのVBA-フィルタ抽出後の...
-
VBAでマクロ実行中はExcelのマ...
-
DataGridViewの各セル幅を自由...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
TODAY()で設定したセルの日付...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
Excelのプルダウンで2列分の情...
-
VBA コピーして次の値まで貼り...
-
screenupdatingが機能しなくて...
-
エクセルVBAでコピーして順...
-
VBA初心者です。結合セルを保持...
-
セル色なしの行一括削除
-
VBAでセルをクリックする回...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
【VBA】指定したセルと同じ値で...
おすすめ情報