• ベストアンサー

エクセル2003 でアンケート入力を作成したい

添付のような書式で 項目1(B3セル)から項目5(B7セル)までを手入力して、「実行」みたいなボタンを押すと、E17セルからI17セルへ入力されるようにしたいです。 また、次データを入力する際に、「B2セル」に自動で最上の空白行の数値を持ってくる事はできますか? マクロ?でできるらしいのですが、マクロがよくわかりません。。。 詳しい方、素人でもわかるようなアドバイス頂けたらうれしいです。 よろしくお願いします

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

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

いろいろやってたら、初心者に難しい(使う人にやさしい?)ものができてしまった アドバイスができるほど、詳しくないのでそのままコピペの説明で申し訳ない 1. [Alt]+[F11] VBE起動 2. 挿入 - 標準モジュール 3. 下記 コピペ Sub 一覧表へ値を入れる() '変数の定義 Dim 挿入行 As Long Dim m As Byte Dim n As Long '一覧表の範囲を判断し(D12セルを選択して[Ctrl]+[Shift]+[*])、     ActiveWorkbook.Names.Add Name:="一覧表", _        RefersTo:=Range("D12").CurrentRegion 'データ入力部にのみ「一覧表」と名前を定義する    Intersect(Range("一覧表"), Range("一覧表").Offset(1, 1)).Name = "一覧表" '変数の代入    挿入行 = Range("B1").Value    m = 0 '挿入する行が空白でない場合に、上書きするか判断メッセージを出す    For n = 1 To 5        If Range("一覧表").Cells(挿入行, n) = "" Then m = m + 1    Next n    If m <> 5 Then        If MsgBox("上書きしますか", vbOKCancel) = vbCancel Then Exit Sub    End If '一覧表への値を入れる    For n = 1 To 5        Range("一覧表").Cells(挿入行, n) = Cells(2 + n, "B").Value    Next n End Sub Sub 一番上の空白セルに値を入れる() Dim 挿入行 As Long Dim n As Long Dim i As Long Dim m As Byte Dim 新規 As Long 挿入行 = Range("B1").Value    '一覧表の範囲を判断し(D12セルを選択して[Ctrl]+[Shift]+[*])、    ActiveWorkbook.Names.Add Name:="一覧表", _        RefersTo:=Range("D12").CurrentRegion    'データ入力部にのみ「一覧表」と名前を定義する    Intersect(Range("一覧表"), Range("一覧表").Offset(1, 1)).Name = "一覧表" For i = 1 To Range("一覧表").Rows.Count m = 0    For n = 1 To 5        If Range("一覧表").Cells(i, n) = "" Then m = m + 1    Next n If m = 5 Then Exit For Next i If i > Range("一覧表").Rows.Count Then MsgBox "一覧表に空白行がありません" Exit Sub End If If MsgBox("一覧表 " & i & "行に新規挿入しますか", vbOKCancel) = vbCancel Then Exit Sub    For n = 1 To 5        Range("一覧表").Cells(i, n) = Cells(2 + n, "B").Value    Next n    MsgBox "一覧表 " & i & "行にデータが入力されました" End Sub 4. ボタンへ登録 2種類 No.1さんの回答と組み合わせるなどして適宜編集することをお勧めします

その他の回答 (3)

回答No.4

No3です。No.1さんではなく No.2の回答者:web2525さんと組み合わせてどうぞ でしたm(_ _)m

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

ボタンにマクロを登録する方法 http://allabout.co.jp/gm/gc/297818/ 登録するマクロ Sub Macro1() Range("B3:B7").Copy Range("E12").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Range("B3:B7").ClearContents Range("B3").Select End Sub 動作はB3:B7範囲をコピーして、E12セルから見た最終データの下のセルに、行列を入れ替えて貼り付けを実施しています >「B2セル」に自動で最上の空白行の数値を持ってくる B2セルに計算式 =COUNTA(E:E) と入力

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.1

えっと、直接E列からI列のところに入力していくのでは駄目なんですか?

関連するQ&A