
いま、ローマ字入力・ひらがな入力の内、ひらがな入力の練習をしています。
入力設定をローマ字・ひらがなの内、ひらがな入力に設定しています。
なにかひらがなを入力しエンターキーを1回押してひらがなのまま入力と確定して、もう一度エンターキーを押してすぐ下のセルに移動する作業(「ひらがな入力+エンターキー2回」の作業)をなんども繰り返して練習しています。
練習のスピードを上げるため、
エクセルでセルにひらがな一文字を入力した途端にひらがなのまま確定しすぐ下のセルへ移動する方法(「ひらがな入力+エンターキー2回」の内「エンターキー2回」の操作を省略出来る方法)を希望しています。
VBAを伴う方法でも構いません。
ご教授をお願い致します。
No.1ベストアンサー
- 回答日時:
ワークシートでは難しいと思います。
実用性は疑問ですが、「まがい物」で回答いたします。
ワークシートに、セルのサイズに合わせてコントロールツールボックスのテキストボックスを置きます。
テキストボックスに一文字(アルファベット)を入力すると、かなに変換してセルに表示し、一つ下のセルにテキストボックスも含め移動します。
初期化は、シートのActivateイベントで行う様にしてみました。(別シートに一旦移って戻る必要があります)
なお、致命的な欠陥があり、「を」の練習が出来ませんので悪しからず。
ワークシートのイベントについては参考URLをご覧下さい。
Private Sub TextBox1_Change()
Const strRef As String = "3e456tgh:bxdrpcqazwsui1,kfv2^-jn]/m789ol.;\0y"
Const strKana As String = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん"
TextBox1.Font.Size = 1
If TextBox1.Value = "" Then Exit Sub
Application.EnableEvents = False
TextBox1.TopLeftCell.Activate
ActiveCell.Value = Mid(strKana, InStr(strRef, TextBox1.Value), 1)
TextBox1.Top = ActiveCell.Offset(1, 0).Top
TextBox1.Value = ""
TextBox1.Activate
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Activate()
ActiveSheet.Cells.ClearContents
Range("A1").Activate
TextBox1.Top = 0
TextBox1.Left = 0
TextBox1.Activate
End Sub
参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
ご教授をありがとうございます。
質問が二つありますので、お願いいたします。
<<<1、入力手順は下記の手順でよろしいでしょうか。>>>
表示、
ツールバー、
コントロールツールボックス、
テキストボックスとたどって、
ドラックアンドドロップして、
出てきたボックスを右クリック、
テキストボックスオブジェクト、
編集、とたどる。
すると、カーソルが点滅する「I」字形の棒として示されるので、入力を始める。
<<<2、マクロのコードの挿入箇所は下記の手順でよろしいでしょうか。>>>
ツール、
マクロ、
新しいマクロの記録、
とたどって、何かのマクロを記録する。
その後、ツール、
マクロ、
マクロ、
今さっき保存したマクロを選択、
編集とたどる。
すると、Microsoft Visual Basicの画面が表示され、記録したマクロのコードが表示される。
そのすぐ下に、
「Private Sub TextBox1_Change()」から始まって、
「TextBox1.Activate
End Sub」で終わるマクロのコードを挿入する。
上記の入力方法とマクロの挿入を試してみましたが、成功できませんでした。
どうぞ宜しくお願い致します。
No.4
- 回答日時:
#1~です。
イベントが機能していませんね。
xl2010でも試してみましたが、特にイベントを動作させるのに苦労もしませんでした。
という事で、原因が分かりません。
念の為ですが、マクロは有効になっていますね?
後は、質問者様のエクセルのバージョンに合わせてWeb上のイベントの記事を調査して、
試行してみてくださいとしか言い様がありません。
あしからず。
ご回答をありがとうございます。
○○○念の為ですが、マクロは有効になっていますね?
↓ ↓ ↓
はい、有効になっています。
○○○イベントが機能していませんね。
○○○後は、質問者様のエクセルのバージョンに合わせてWeb上のイベントの記事を調査して、
試行してみてください
↓ ↓ ↓
イベントが機能していないとのことですので、この機能について、調べてみます。
大変勉強になりました。
今まで何度も教えていただき、本当にありがとうございました。
No.3
- 回答日時:
#1です。
コードのコピー先は問題ないと思います。
どの様にうまくいかないのか教えて下さい。
例)テキストボックスに何か文字を打ち込むと、どんなエラーが出る等
また、下記によりイベントが機能しているか試してみて下さい。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "Event!"
End Sub
を入力して、目的のシートのどれかのセルを選択したとき、「Event!」という、メッセージボックスは表示されますか?
Application.EnableEvents = False
というコードを実行していますので、正常終了しなかったときに、以降イベントが無効になります。簡便にはエクセルを一旦終了して再度起動すると有効になります。
さもなければ、シートモジュール上でも、標準モジュール上でも良いですが、下記コードを実行して下さい。
Sub test()
Application.EnableEvents = True
End Sub
質問者です。なんども回答をありがとうございます。
○○○コードのコピー先は問題ないと思います。
どの様にうまくいかないのか教えて下さい。
例)テキストボックスに何か文字を打ち込むと、どんなエラーが出る等
↓ ↓ ↓
テキストボックスに何か文字を打ち込んでも、入力したままの文字が表示されるだけで、何も変化が起こりません。
メモ帳やワードなどに文字を入力していけば、入力通りの文字が表示されるのと同じ状態です。
○○○また、下記によりイベントが機能しているか試してみて下さい。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "Event!"
End Sub
を入力して、目的のシートのどれかのセルを選択したとき、「Event!」という、メッセージボックスは表示されますか?
↓ ↓ ↓
「Event!」という、メッセージボックスは表示されません。
セルを選択したり、セルに何か文字を入力しても、何も変化がありません。
○さもなければ、シートモジュール上でも、標準モジュール上でも良いですが、下記コードを実行して下さい。
Sub test()
Application.EnableEvents = True
End Sub
↓ ↓ ↓
この3行をクリックしたのちに、
Visuial Basic Editorの画面にて、画面上部にある、右向きの三角形(Sub/ユーザーフォームの実行)をクリックすると、
Microsoft Visual Basicと題する小さな画面が表示され、その中には、
「コンパイルエラー
名前が適切ではありません Worksheet_SelectionChange
OK ヘルプ」
と表示されます。
なお、
Visuial Basic Editorの画面では、
「Private Sub Worksheet_SelectionChange(ByVal Target As Range)」の行が自動的に選択されていました。
どうぞ宜しくお願い致します。
No.2
- 回答日時:
#1です。
マクロの記述先が違っています。
補足に書かれている手順ですと、標準モジュールになりますが、そこではダメです。
目的のシートのシートモジュールに記述する必要があります。
参考URLに画像入りで説明がありますので、そちらを熟読下さい。
<<<質問3>>>
○シート3にて、
○表示、
○ツールバー、
○コントロールツールボックス、
○テキストボックスとたどって、
○ドラックアンドドロップして、
○テキストボックスを作成。
○ツール、
○マクロ、
○Visuial Basic Editor、とたどって、
○Visuial Basic Editorの画面を表示させる。
このVisuial Basic Editorの画面にて、左上から、
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
のなかに、
「オブジェクトボックスで「Worksheet」を選択すると、プロシージボックスから9つのイベントが選択できます。」
と書かれた行のすぐ下にある図の左側に
最上部から、
********
Microsoft Visual Basic・・・
ファイル、編集、表示・・・
プロジェクト-VBAProjects
Microsoft Excel Objects
Sheet1(Sheet1)
Sheet2(個人票)
Sheet3(判定票)
Sheet4(Sheet2)・・・・
********
と書かれた部分があります。
この部分に該当する箇所にて、
○テキストボックスを作成した、Sheet3(Sheet3)をクリック、
○「オブジェクトボックス」にて「TextBox1」を選択、
○「プロシージャボックス」にて「Change」を選択、
○すると、
「Private Sub TextBox1_Change()
End Sub」
と表示される。
○この2行の間に、
「Const strRef As String = "3e456tgh:bxdrpcqazwsui1,kfv2^-jn]/m789ol.;\0y"
Const strKana As String = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん"
TextBox1.Font.Size = 1
If TextBox1.Value = "" Then Exit Sub
Application.EnableEvents = False
TextBox1.TopLeftCell.Activate
ActiveCell.Value = Mid(strKana, InStr(strRef, TextBox1.Value), 1)
TextBox1.Top = ActiveCell.Offset(1, 0).Top
TextBox1.Value = ""
TextBox1.Activate
Application.EnableEvents = True」
をコピー・貼り付けをする。
○「オブジェクトボックス」にて「Worksheet」を選択、
○「プロシージャボックス」にて「Activate」を選択、
○すると、
「Private Sub Worksheet_Activate()
End Sub」
と表示される。
○この2行の間に、
「ActiveSheet.Cells.ClearContents
Range("A1").Activate
TextBox1.Top = 0
TextBox1.Left = 0
TextBox1.Activate」
をコピー・貼り付けをする。
この方法で試してみましたが、成功しませんでした。
お手数をおかけいたしますが、対処方法を教えていただけないでしょうか。
どうぞ宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1月0日と表示される!!
-
Excelの「0」だけ非表示、小数...
-
VBA セル間のリンク修正につい...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
Excelでスクロールすると文字が...
-
(Excel)あるセルに文字を入力...
-
エクセルで条件に一致したセル...
-
エクセルについて
-
Excel 計算式の中で使っている...
-
ハイパーリンク で『指定された...
-
複数シートの同じセル内容を1シ...
-
VBAで、セル(Range)のオブジ...
-
ワードからエクセルのシートに...
-
エクセルで、加筆修正したセル...
-
エクセル2010で、ホームキーを...
-
ExcelでTODAY関数を更新させな...
-
【エクセル】文中に別シートの...
-
エクセルで複数のシートの同じ...
-
エクセルのセルに、マウスで選...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
Excelシートの保護時にデータの...
-
ExcelでTODAY関数を更新させな...
-
日付が未入力の際はゼロか、空...
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
EXCELのハイパーリンクのセルを...
-
マクロ 新しいシートにデータ...
-
エクセル ハイパーリンクで画像...
-
エクセルで複写のように自動入...
-
ハイパーリンク で『指定された...
-
別シートのセルを絶対参照にする
-
シート参照で変数を使いたい(EX...
-
エクセルで複数のシートの同じ...
-
EXCEL関数でシート名が変わる可...
おすすめ情報