| 
    
     |  | ▼いちご さん: こんばんは。
 
 >  ここまで,できると,さらに欲が出てきました。
 > マウスでセルをクリックし,さらに,テクストボックス内でクリック
 > すると,数字入力待ちのなります。ですが,繰り返し,いろいろなセル
 > をクリックしていくと,テキストボックスの色が交互に白と黄色なります。
 > もちろん,このとき,テキストボックスの色にかかわらず,数字入力待ち
 > の状態のなっていまるのですが,できれば,数字入力待ちの時は黄色に
 > なっていた方がいいのです。
 
 う〜ん。ちょっと考えるのが億劫になってきました。
 
 それに、今使ってるテキストボックス(ActiveXコントロール)って
 ちょっと動作がかったるい(遅い)と思いませんか?
 なんだかこのままActiveX方式でやるのは実用的ではないような気が
 してきました。
 提案しておいて何なんですけど
 スミマセン。。
 
 >  アンケートの項目は,32項目あり,サンプル数は,240人分ぐらい
 > なのですが,一人目の最後の項目の回答を入力し終わったら,続けて,
 > 二人目の最初の項目を入力したいのですが,次のような表を例にして,
 > 教えてください。
 >
 >   A     B      C     D      E
 > 1      ○○さん  △△さん  □□さん  ☆☆さん
 > 2 質問1     2      5     2
 > 3 質問2     1      2     2
 > 4 質問3     4      2     3
 > 5 質問4  みかん   りんご   いちご
 > 6 質問5  ねこ    いぬ    ねこ
 >
 > よろしくお願いします。
 
 ふう。。
 ActiveXを使わない方法を一緒に考えてみませんか?
 たとえば以下のような方法はどうでしょう。
 
 新規シートを挿入して、そこに元シートのデータだけをコピーして
 ください。(シートモジュールのイベントコードはコピーしないため)
 
 A     B      C     D      E
 1      ○○さん  △△さん  □□さん  ☆☆さん
 2 質問1
 3 質問2
 4 質問3
 5 質問4
 6 質問5
 :
 32 質問31
 33 質問32
 
 このシートのイベントコードは以下のようなものとします。
 ------------------------------------------------------------
 Option Explicit
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim ss As String
 Dim i As Long, L As Long
 Dim r As Range
 
 If Target.Count > 1 Then Exit Sub
 ss = CStr(Target.Value)
 If IsNumeric(ss) Then
 L = Len(ss)
 ReDim v(1 To L, 0)
 For i = 1 To L
 v(i, 0) = Mid$(ss, i, 1)
 Next
 Application.EnableEvents = False
 Target.Resize(L).Value = v
 Set r = Target.Offset(L)
 If r.Row > Me.UsedRange.Rows.Count Then
 Me.Cells(2, r.Column + 1).Select
 Else
 r.Select
 End If
 Set r = Nothing
 Application.EnableEvents = True
 If Me.ScrollArea = "" Then
 Set r = Me.UsedRange
 Me.ScrollArea = Application. _
 Intersect(r, r.Offset(1, 1)).Address
 End If
 End If
 End Sub
 
 Private Sub Worksheet_BeforeDoubleClick( _
 ByVal Target As Range, Cancel As Boolean)
 'Cancel = True
 Me.ScrollArea = ""
 End Sub
 ------------------------------------------------------------
 コピーしたら、シートに戻って、
 [B2]セル(質問1の行)を選択して、このセルに
 「214」
 とタイプしてください。Enter を押すと、
 A     B      C     D      E
 1      ○○さん  △△さん  □□さん  ☆☆さん
 2 質問1     2
 3 質問2     1
 4 質問3     4
 5 質問4
 6 質問5
 
 となるはずです。(数字1文字が1つのセルに分割転記されます)
 アクティブセルが その列の 質問4 の行に移動しますから、
 「みかん」Enter 「ねこ」Enter と入力してください。
 
 A     B      C     D      E
 1      ○○さん  △△さん  □□さん  ☆☆さん
 2 質問1     2
 3 質問2     1
 4 質問3     4
 5 質問4  みかん
 6 質問5  ねこ
 
 最後の質問32 を入力し終わると、プログラムは自動的に
 右隣の列の 2行目に 移動します。
 ただし、入力間違いで、質問28から「52242」と打ち込むところを
 間違って「522426」とタイプしたときも警告なしに 34行目に
 「6」が入力されてしまいます。
 ところが ScrollArea で 34行目には移動できないようになってい
 るので、このままでは修正することができません。
 そういうときは ScrollAreaをいったん解除します。
 ↑のサンプルコードでは、いずれかのセルをダブルクリックする
 ことにより、すべてのセルが選択可能になるようになっています。
 
 提示のサンプルデータですと、
 数字1文字を入力する範囲が質問1〜質問3までの3セルしかない
 ので、この方法は却って効率悪いかもしれないけれど、
 実際は1文字の数字を連続入力する範囲がもっと多いということを
 想定して組んでみたものです。
 まるで発想を変えちゃいましたけど、どうもTextBox案は先行き
 ゆき詰まりそうな気がしたものですから、あしからず。m(__)m
 
 |  |