こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAについて

こんにちわ!
今、エクセルでAシートの入力した項目をBのシートへデーターが入力できるようなシステムを以下のようにくみました。
そこでBシートにデーターが入力されるのですが20行まで入力すると入力できないようにしたいのですが、なかなか上手くいきません。
A1からF20まで書式のロックを外しそれ以外のセルは保護をかけたのですがその状態でVBAを使って20行以上入力できませんという感じのエラー表示をしたいのですが、どうすればいいでしょうか?
VBAは初心者ですが宜しくお願いします。

Private Sub CommandButton1_Click()
Dim row As Integer

row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1
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

投稿日時 - 2008-06-16 16:00:10

QNo.4105179

困ってます

質問者が選んだベストアンサー

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

でどうでしょうか。

投稿日時 - 2008-06-16 22:27:21

お礼

keirikaさん、大変助かりました。
ありがとうございました。

投稿日時 - 2008-06-17 12:47:02

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

何がしたいのか、よく解りません。

セルにロックを掛けているんだったら、わざわざVBAを使ってエラーメッセージを出さなくても、どこかに「20行以上入力できません」と書いておけば良いだけではないのでしょうか?

このVBAコードは、質問者様が書いたものですか?
意味が解っていますか?
ActiveWindow.SmallScroll Down:=-9 なんていうのは、質問内容とはまったく関係ないのですが。

投稿日時 - 2008-06-16 16:57:17

あなたにオススメの質問