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

締切り済みの質問

VBAについて

こんばんは、VBA初心者で勉強をはじめたばかりで、自分で例題を作り調べながら途中まで作成しましたが、行き詰ったのでご教授をお願いします。ECXEL2000を使用しています。

○やりたいこと。
・INPUTBOXを表示させ、年齢を入力してもらう。
・年齢が、18~64歳までならA2セルに入力年齢を表示させる。
    17以下は「就職前」、65歳以上は「退職済」とBOXで表示させ、セルには表示させない。
・A2セルに入力したら、A3セルをセレクトする。
・INPUTBOXを表示させ、再度年齢入力をしてもらい、既にA2セルに年齢が入力済みであれば、A3に表示する。これをA10セルまで行えるようにする(その都度マクロの実行で実施)

○作成したマクロです。・・・やりたいことがすべて記述できていません。
Sub 年齢入力()
'INPUTBOXに入力される年齢の変数
  Dim r As Integer
'データの最終行を代入する変数
Dim k As Long

r = InputBox("年齢入力")
k = Rows.Count

Range("a2").Select

If 17 < r And r < 65 Then
MsgBox ("入力します")
Range("a2") = r
ElseIf r >= 65 Then
MsgBox ("退職済")

ElseIf r <= 17 Then
MsgBox ("就職前")

End If

Cells(k, 1).End(xlUp).Offset(1).Select

End Sub

以上のマクロのどこを変更すれば、私のやりたいことができるようになりますでしょうか?よろしくお願いします。

投稿日時 - 2011-10-15 22:26:39

QNo.7073879

困ってます

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

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

回答(2)

ANo.2

一例です。
★部分を変更しました。
データ未入力(含むキャンセル)、文字列の場合、InputBoxの実行エラーになるのでこの辺りも配慮した方がよい(サンプルでは入力を無視しました)

Sub 年齢入力()
Dim r As String '← ★
Dim k As Long
r = InputBox("年齢入力")
If r = "" Then Exit Sub '←★
k = Cells(Rows.Count, 1).End(xlUp).Row '←★
If k > 9 Then MsgBox "入力域オーバ": Exit Sub '←★
If 17 < r And r < 65 Then
MsgBox ("入力します")
Cells(k, 1).Offset(1) = r
ElseIf r >= 65 Then
MsgBox ("退職済")
ElseIf r <= 17 Then
MsgBox ("就職前")
End If
End Sub

投稿日時 - 2011-10-17 11:19:38

ANo.1

Sub test01()
p1:
x = InputBox("年令=")
If x = 99 Then Exit Sub
If x >= 18 And x <= 64 Then
d = Range("A65536").End(xlUp).Row
Cells(d + 1, "A") = x
ElseIf x < 18 Then
MsgBox "就職前"
Else
MsgBox "退職後"
End If
GoTo p1
End Sub
終わる場合は99を入れる約束とする。>その都度マクロの実行で実施、には従ってない。
例題だからいいが、実践ではエクセルはシートにはデータを手入力するのが基本で、このような手の込んだことは考えるな。
データーフォームなどというのもある。

投稿日時 - 2011-10-15 23:12:37

お礼

こんばんは、早速の回答ありがとうございます。
一つ一つ勉強させていただきます。

たしかに実践ではシートに手入力になりますね!!今回は勉強のためということで・・・!!

本当にありがとうございました。

投稿日時 - 2011-10-15 23:32:54

あなたにオススメの質問