• ベストアンサー
  • 困ってます

エクセルVBAについて

  • 質問No.4105179
  • 閲覧数323
  • ありがとう数2
  • 回答数2
こんにちわ!
今、エクセルで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

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 42% (279/658)

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

でどうでしょうか。
お礼コメント
noname#63196
keirikaさん、大変助かりました。
ありがとうございました。
投稿日時:2008/06/17 12:47

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 19% (195/979)

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

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

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

その他の関連するQ&Aをキーワードで探す

ページ先頭へ