- ベストアンサー
EXCEL2003 VBA
EXCELで文字を入力する際にセルに入力できる文字数を決めておき、それ以上の文字数の場合は下のセルに移動するVBAは可能でしょうか。可能でしたら教えていただけますでしょうか。よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
シート名タブを右クリックしてコードの表示を選び 現れたシートに下記をコピー貼り付けとくと Private Sub Worksheet_Change(ByVal Target As Range) Dim h As Range On Error Resume Next For Each h In Application.Intersect(Target, Range("A1:A10")) If Len(h) > 10 Then h.Offset(1) = Mid(h, 11, Len(h)) h = Left(h, 10) End If Next End Sub たとえばA1:A10のセル範囲で,入力した言葉を10文字ずつ下に落として切りそろえます。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルVBAの取り扱うレベルを超えた仕組み、APIというウインドウズの基礎的な仕組みを使わないと文字入力は、そに都度に、とらえられません。ですからVBAレベルでは不可能。(ゲームなどで必要になるこういう仕組みはない。) Enterキーを押して(など)セルの値になってからならVBAでチェックできる。 ーー 既にご指摘のように「入力規則」でもチェックできる、(文字列(長さ指定)ー次の値より小さいー最大値など)。 これも入力を確定(Enterなど)してからチェックされる ーー もっと色々勉強するまでは、あきらめ、上記で我慢すること。
お礼
回答とご指摘ありがとうございました。いろいろ勉強します。ご指摘のように勉強し直します。ありがとうございました。
入力規則ではいけないのでしょうか。 http://www2.odn.ne.jp/excel/waza/validation.html#SEC7
お礼
回答ありがとうございました。EXCELにはいろいろな技があることを知りました。勉強し直します。ありがとうございました。
- DreamyCat
- ベストアンサー率56% (295/524)
セルの編集中(文字入力中)はVBAは動作しませんので 不可能です。
お礼
早速の回答ありがとうございました。VBAについて勉強します。お手数をおかけしました。
お礼
丁寧な回答ありがとうございました。コードまで記載していただき感謝しております。早速、実行してみます。お手数をおかけしました。ありがとうございました。今後もよろしくお願いいたします。
補足
早速実行してみました。うまくできました。ありがとうございました。