- ベストアンサー
エクセルVBAで20行までの入力制限を設定する方法
- エクセルVBAを使ってAシートからBシートにデータを入力する際に、20行までの入力制限を設定したい場合、セルの書式をロック解除し、保護をかけた上でVBAを使用して入力制限を行うことができます。
- 具体的には、指定したセル範囲以外のセルを保護し、VBAのコードを用いて入力された行数をカウントし、20行を超える場合にエラーを表示するような処理を行います。
- このような方法を使えば、VBA初心者でも簡単に20行までの入力制限を設定することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub CommandButton1_Click() Dim row As Integer row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1 '======================================= If row > 20 Then MsgBox "20行以上入力できません" Exit Sub End If '======================================= Sheets("date").Cells(row, 1).Value = Range("B2").Value row = WorksheetFunction.CountA(Sheets("date").Columns(2)) + 1 Sheets("date").Cells(row, 2).Value = Range("B3").Value row = WorksheetFunction.CountA(Sheets("date").Columns(3)) + 1 Sheets("date").Cells(row, 3).Value = Range("B4").Value row = WorksheetFunction.CountA(Sheets("date").Columns(4)) + 1 Sheets("date").Cells(row, 4).Value = Range("B5").Value row = WorksheetFunction.CountA(Sheets("date").Columns(5)) + 1 Sheets("date").Cells(row, 5).Value = Range("B6").Value row = WorksheetFunction.CountA(Sheets("date").Columns(6)) + 1 Sheets("date").Cells(row, 6).Value = Range("B7").Value Sheets("統制入力").Select Range("B17").Select ActiveWindow.SmallScroll Down:=-9 Range("B3:B7").Select Selection.ClearContents Range("B1").Select End Sub でどうでしょうか。
その他の回答 (1)
- higekuman
- ベストアンサー率19% (195/979)
何がしたいのか、よく解りません。 セルにロックを掛けているんだったら、わざわざVBAを使ってエラーメッセージを出さなくても、どこかに「20行以上入力できません」と書いておけば良いだけではないのでしょうか? このVBAコードは、質問者様が書いたものですか? 意味が解っていますか? ActiveWindow.SmallScroll Down:=-9 なんていうのは、質問内容とはまったく関係ないのですが。
お礼
keirikaさん、大変助かりました。 ありがとうございました。