エクセル使用時のIMEの設定について
- エクセルを使用する際にIMEの設定方法について説明します。
- 特定のセル範囲で入力した数字を変換せずに確定し、同時に移動する方法について教えてください。
- VLOOKUP関数を使用せずに、検索用の数字を入力するセルと検索結果を表示するセルを同じにする方法を知りたいです。
- ベストアンサー
エクセル使用時のIMEの設定について
”単語/用例の登録”機能を利用して、”読み”に数字の”1”を登録、”語句”に”炭俵灰之介”を 登録する。このままだと、任意のセルに”1”を入力→スペースキーで変換→ENTERで確定 →ENTERで直下のセルに移動、となりますが、これを、特定のセル範囲、例えば、D5からD10 のみにおいて、1を入力→他の変換候補を表示させることなく、ENTERで確定、同時に直下の セルに移動できるようにしたいのですが、なにか方法はあるでしょうか。 VLOOKUP関数を使用すると、検索用の数字を入力するセルと、検索結果を表示するセルが 別になり、画面が煩雑に思われるので、このような方法が可能かどうか考えているところですが 検索用の数字を入力するセルと、検索結果を表示するセルを同じにする方法はなにか あるでしょうか。 ご教授お願いいたします。
- su-darabusi
- お礼率73% (61/83)
- オフィス系ソフト
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3、cjです。 > その、すこしが難しい よくご存じのようで、安心しました。 一応、仕様等私好みで整理してみました。 #好きでやってるので、気にしないで下さいね。あのままじゃ余りにもアレなので。 インデックスをセル値に指定するだけで事足りる話だったなら、それはそれでいいので。 ' ' ===ThisWorkbookモジュール=== Option Explicit ' ' ============================ 7767828we2 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").FrmTBox.Visible = False '◆ Sheet名を指定 End Sub ' ' ============================ ' ' ======Sheet モジュール====== Option Explicit Private aList ' List配列 Private nUB As Long ' List配列のサイズ Private n As Long ' List配列用インデックス Private Const S_REF = "D5:D10" '◆処理対象範囲を参照文字列指定 ' ' ============================ 7767828shEv Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range(S_REF)) Is Nothing Or Target.Count > 1 Then If FrmTBox.Visible Then FrmTBox.Visible = False Else Call ActTBox(Target) End If End Sub ' ' ---------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range(S_REF)) Is Nothing Then Exit Sub Cancel = True Call ActTBox(Target) End Sub ' ' ============================ 7767828tbEv Private Sub FrmTBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) With FrmTBox Select Case KeyCode Case 27: Application.OnTime Now(), Me.Name & ".HideTBox" ' ▼"ESC" Case 37: ActiveCell.Offset(, -1).Select ' ▼"←" Case 38: ActiveCell(0).Select ' ▼"↑" Case 39: ActiveCell(1, 2).Select ' ▼"→" Case 40: ActiveCell(2).Select ' ▼"↓" End Select End With End Sub ' ' ---------------------------- Private Sub FrmTBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) On Error GoTo CrArr_ nUB = UBound(aList) On Error GoTo 0 With FrmTBox Select Case KeyCode Case 48 To 57, 96 To 105: Call ValVal(n & KeyCode Mod 48) ' ▲"0" To "9", "0" To "9"(NumLockedTenKey) Case 107, 187: Call ValVal(n + 1) ' ▲Shift+"+", "+"(TenKey) Case 109, 189: Call ValVal(n - 1) ' ▲"-", "-"(TenKey) Case 8: Call ValVal(n \ 10) ' ▲"BACKSPACE" Case 46: Call ValVal(0) ' ▲"DEL" Case 9, 13 ' ▲"TAB", "ENTER" If .Value <> "" Then ActiveCell.Value = .Value If Shift Then ' "SHIFT" ActiveCell(0).Select Else ActiveCell(2).Select End If End Select End With DoEvents Exit Sub CrArr_: Call SetList Resume End Sub ' ' ============================ 7767828subR Sub SetList() ' ◆ List内容を一次元配列で設定。方法、内容は運用に合わせて適宜。Null値不可。 aList = VBA.Array(Empty, "炭俵灰之介", "Alfred", "Benjamin", "Charlie", "David", "Edward" _ , "Frank", "George", "Harry", "Isaac", "Jack", Empty, "King", "London" _ , "Mary", "Nellie", "Oliver", "Peter", "Queen", "Robert", "Samuel", "Tommy") End Sub ' ' ---------------------------- Sub ActTBox(Target As Range) ' FrmTBox 初期化 位置設定 表示 等 n = 0 With FrmTBox .Object.Value = Empty .Object.IMEMode = fmIMEModeOff .Top = Target(1).Top .Left = Target(1).Left .Activate If Not .Visible Then .Visible = True End With End Sub ' ' ---------------------------- Private Sub HideTBox() ' ESC 処理 DoEvents: DoEvents FrmTBox.Visible = False ActiveCell.Activate End Sub ' ' ---------------------------- Sub ValVal(nn As Long) ' List用インデックス n と FrmTBox.Value の管理 If nn < 0 Then nn = 0 n = nn With FrmTBox If n > nUB Then ' 割り当ての無いインデックスは数値のまま .Value = n ElseIf n = 0 Then .Value = Empty ElseIf aList(n) = "" Then .Value = n Else .Value = aList(n) End If End With End Sub ' ' ============================ ' ' ============================ 7767828prep Private Sub Prep7767828() ' TextBox 初期設定 利用開始時に一度だけ実行 With OLEObjects.Add(ClassType:="Forms.TextBox.1") With .Object .BackColor = &HC0FFFF .SpecialEffect = fmSpecialEffectFlat End With .Height = Range("D5").Height '◆ .Width = Range("D5").Width '◆ .Name = "FrmTBox" .PrintObject = False .Visible = False End With End Sub ' ' ===========================
その他の回答 (3)
- cj_mover
- ベストアンサー率76% (292/381)
' ' =========ThisWorkbookモジュール========= ' ' ※ Sheet名を正しく指定してください ※ Option Explicit ' ' ---------------------------------------- 7767828we1 Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("Sheet1").OleTxtBx.Visible = False End Sub ' ' ---------------------------------------- 7767828we2 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").OleTxtBx.Visible = False End Sub ' ' =======以上ThisWorkbookモジュール======= ' ' ============Sheet モジュール============ Option Explicit Private n As Long Private aList ' ' ---------------------------------------- 7767828se1 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("D5:D10")) Is Nothing Or Target.Count > 1 Then ' ◆ If OleTxtBx.Visible Then n = Empty OleTxtBx.Visible = False End If Else Call SetTxtBox(Target) End If End Sub ' ' ---------------------------------------- 7767828se2 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("D5:D10")) Is Nothing Then Exit Sub ' ◆ Cancel = True Call SetTxtBox(Target) End Sub ' ' ---------------------------------------- 7767828sr Sub SetTxtBox(Target As Range) ' TextBox 初期設定 With OleTxtBx .Top = Target(1).Top .Left = Target(1).Left .Height = Target(1).Height .Width = Target(1).Width .IMEMode = fmIMEModeOff .Value = Empty .Activate If Not .Visible Then .Visible = True End With End Sub ' ' ---------------------------------------- 7767828te1 Private Sub OleTxtBx_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 27 Then ' "ESC" n = Empty ' OleTxtBx.Visible = False ActiveCell.Activate End If End Sub ' ' ---------------------------------------- 7767828te1 ' ' 方向キーなど、未対応のキーがあります。未完成です。 Private Sub OleTxtBx_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim nUB As Long On Error GoTo CrArr_ nUB = UBound(aList) On Error GoTo 0 With OleTxtBx Select Case KeyCode Case 48 To 57, 96 To 105 ' 0 To 9, 0 To 9(NumLockedTenKey) n = Val(n & KeyCode Mod 48) If n > nUB Then .Value = n ElseIf aList(n) = "" Then .Value = n Else .Value = aList(n) End If Case 9, 13 ' "TAB", "ENTER" n = Empty If .Value <> "" Then ActiveCell.Value = .Value ' ActiveCell.Value = .Value ' ' ←↑ as U like If Shift Then ' "SHIFT" If ActiveCell.Row = 5 Then .Visible = False ' ◆ ActiveCell(0).Select Else If ActiveCell.Row = 10 Then .Visible = False ' ◆ ActiveCell(2).Select End If Case 8, 46 ' "BACKSPACE", "DEL" n = Empty .Value = Empty End Select End With Exit Sub CrArr_: ' ' 一次元配列を設定します。方法、内容は運用に合わせて適宜。以下↓はダミー。 aList = VBA.Array(Empty, "炭俵灰之介", "Alfred", "Benjamin", "Charlie", "David", "Edward" _ , "Frank", "George", "Harry", "Isaac", "Jack", Empty, "King", "London" _ , "Mary", "Nellie", "Oliver", "Peter", "Queen", "Robert", "Samuel", "Tommy") Resume End Sub ' ' ==========以上Sheet モジュール========== ' ' ========初期設定(Sheet モジュール)======== ' ' 利用開始時にこのプロシージャだけを貼り付け、一度だけ実行 Private Sub Prep7767828() ' TextBox 初期設定 Dim oObj As OLEObject Set oObj = Me.OLEObjects.Add(ClassType:="Forms.TextBox.1") With oObj With .Object .BackColor = &HC0FFFF .SpecialEffect = fmSpecialEffectFlat End With .Name = "OleTxtBx" .PrintObject = False .Visible = False End With End Sub ' ' ============== 初期設定 以上============== こんにちは。お邪魔します。 アイデアひとつでトライした習作みたいなもの(完全ではない)です。 試す場合の手順 新規のブックを用意して まずSheet1のシートモジュールにSub Prep7767828だけを貼りつけて実行 Sub Prep7767828はもう不要なので削除 Sheet1シートモジュールにシートモジュール用コードを貼り付け ThisWorkbookモジュールにThisWorkbookモジュール用コードを貼り付け 名前を付けて保存 "ウィンドウ枠固定"、"フィルター"、"アウトライン"などを常時適用したシート、 セルを隠したり描画位置を遷移させるような機能、 などとの併用は、相性悪い、というか奨められません。 本当はUserFormにした方が動作安定します。 でもまあ、ご要望に近い気はしているので、 試して貰えれば仕様を固める足掛かり程度には役に立つんじゃないかな?と。
お礼
回答、ありがとうございます マクロはどうにも手がつけかねています。 >ご要望に近い気はしているので はい、これをすこし変えれば、完成しそうですが、その、すこしが難しい。 でも、これを機会にマクロを勉強してみます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
表示だけで良いなら、対象セル範囲を選択して右クリックし、「セルの書式設定」から表示形式を「ユーザー定義」にして、種類の欄に「[=1]"炭俵灰之介";[2]"2の時の文字列"」と入力してみてください。
お礼
回答、ありがとうございます さっそく利用してみました。なんだか、拍子抜けするぐらい簡単にできました。 なんでも、やってみなくてはわからない、とはいうものの、教わらなくてはわからないことも たくさんありますよね。
- keithin
- ベストアンサー率66% (5278/7940)
こんばんは。 >D5からD10のみにおいて これがご相談の核心部分という事ですか? それならまず、IMEにはそういう器用なマネは出来ません。 またご相談の内容自体はエクセルの「オートコレクト」によって実現可能ですが、こちらも「特定のセル範囲」限定は不可能です。 出来ることその1) >1を入力→他の変換候補を表示させることなく、ENTERで確定、 >同時に直下のセルに移動できるようにしたい それがヤリタイ事であるのなら、次のようにしておくと出来ます。 (極めて限定的な機能なので、何でも自由にできるワケじゃありません。という意味です) 手順: 所定のセル範囲を選択 セルの書式設定の表示形式でユーザー定義を選び [=1]"炭俵灰之介";G/標準 と設定しておく 出来ることその2) シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) dim h as range on error resume next for each h in application.intersect(target, range("D5:D10")) if h = 1 then h = "炭俵灰之介" elseif h = "abc" then h = 999 end if next end sub ファイルメニューから終了してエクセルに戻る 所定のセルに所定の記入を行う。 #参考 ご相談の書き振りが「1ならこれを記入」しかないので、ハードコードしています。 何か一覧表を別に用意できて、それぞれ対応する言葉に書き換えたいと言いたかったのでしたら、上述のようなマクロをちょっと応用すれば簡単に実現できます。特にフォローはしませんので、必要なら自力で挑戦してみて下さい。
お礼
回答 ありがとうございます 出来ることその1)を使わせていただきます。その2)のほうは、マクロの敷居が高くて・・・ でも、マクロを自在に使えれば、市販のソフトに負けないくらいのことができるそうで マクロを勉強してみます。
関連するQ&A
- Excel 2016 入力数字の反応が遅い
Windows 10 Excel 2016 を使用しています。 Excelの表組に、入力した数字の反応がセルによって異なります。数字入力後セルにはグリーンの色でセルの枠が表示され、入力した数字の右端にカーソルが点滅します。数字入力後、ENTERキーを1度で確定するものもありますが、2-3度ENTERキーを押すことが多いのです。改善する方法は、あるのでしょうか
- 締切済み
- Excel(エクセル)
- エクセルでのセルの設定
Win95、Office97で使用してます。エクセルで数字を入力してEnterを押すと自動的に右端に移動しますよね。で、その数字を右端に寄せないためにはセルの書式設定で表示形式を文字列で設定して入力すればセルの中の数字は右端によりませんよね。その設定(表示形式が文字列の設定)の状態がエクセルを開いた時には全部のセルがその設定になるようにすることは可能なんですか?なんかわかりずらい文章でごめんなさい。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2010のTABキー設定を変えたい
エクセル2010を使っています。 TABキーの設定が変えられるか知りたく質問します。 数か月前まではエクセル2003を使っていて、 全角数字入力→TABキー→右のセルに移動 をよく使っていました。 しかし、エクセル2010だと 全角数字入力→エンター→TABキー→右のセルに移動 と、エンターを押さないといけなくなってしまいました。 エクセル2003のようにTABキーを設定しなおすことはできるのでしょうか。 どなたか詳しい方がいましたら、ぜひとも教えていただけませんか。 よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
- Excelの数値入力について
ひらがな入力のまま、セルに数値を入力していますが、以前は「数値入力」「TAB」で右セルに移動していたのに、現在は、「数値入力」「ENTERで確定」しないと「TAB」で右セルに移動しなくなりました。 どうしたら、ENTER確定しなくても右に移動できるようになるのか、教えてください。
- 締切済み
- オフィス系ソフト
- エクセルで数字の入力
エクセルで、セルに「9092123800037414」と入力して、Enterを押すと、「9.092+15」 と表示され、ツールバー(関数の挿入ボタンの右の部分)には、「9092123800037410」と表示されてしまいます。 最後の0を消して、4に入力しなおしても、Enterを押すと、同じようになります。 セルの書式設定で、数値、の表示にしても最後が0のままの表示になってしまいます。 なぜそうなるのでしょうか?またどうすれば、正しく入力したままの数字が確定されるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL 関数を使って出来る?
例えば 1000×0.5(この数字は変動する)=500 のこの数字を A1のセルに 0.5 と入力してenterすると A1のセルに 500 と表示される方法はありますか? (日付等は表示方法が指定出来るので10/5と入力しても10月5日と表示されるので 類似するような方法が無いのかな?と疑問) 直接の入力の方法が駄目でしたら隠れたセルに 0.5 と入力して 人からは 500 と表示される数字だけ見えるようにする良い方法があれば 教えて下さい
- ベストアンサー
- その他MS Office製品
- Excelで文字を確定した後にセルが移動してほしくない
Excel2002でセルに文字を入力して確定するには文字を入れた後にEnterかTabを押しますが、これだとセルが右や下に移動してしまいますよね。セルに入力した後、書式を設定したい時があるので、文字を確定した後セルが移動してほしくないんですが、これってできますでしょうか?EnterやTabを押す以外に文字を確定して、セルが移動しない方法ってありますか?
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字を
エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字をDeleteする。 エクセルで自分が作成したファイルを開きます。 これにはマクロが入っていて、ファイルを開くと セルのD4がアクティブになるようにして有ります。 (カーソルがD4の所に行って点滅で文字入力待ちの状態) シート保護をしてあり、セルD4だけがロックをはずしてあるので セルD4にしか入力は出来ません。 文字入力をすると当然D4のセルに入力がされるのですが 入力後その文字を確定する為にEnterキーを押します。 そうしたらそのシートの印刷がされる(1部です)ようにで来ますか。 そして印刷終了後、セルD4の文字はDeleteされて またアクティブ(カーソルがD4の所に行って点滅)にして 次の入力を待ちたいです。 (文字入力→Enterの瞬間印刷と同時に文字入力が消えるので 入力者は入力確定を見れなくなりますが → 2秒後にDeleteとか出来ますか? または、Enterキーを押すと画面に「印刷中です」と表示したあと セルD4をDeleteとか。) 現在は、 表示-ツールバー-フォームから作成したボタンにマクロを登録してあります。 セルD4に文字を入力しEnterキーで確定後、このボタンを押すと印刷が実行され セルD4の文字がDeleteされてアクティブ(文字入力待ち状態)になります。 このボタンを押すのを省きたいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- MS IME2002の設定で教えて下さい。
MS IME2002の設定で教えて下さい。 以前違う文字入力ソフト(OAK?)を使っており、今回PCを変えたため、MS IMEを使うことにしたのですが、以下の使い方が出来ません。 出来るのであれば設定の仕方等、教えて頂けませんでしょうか? (1)かな入力時に「Q」キーで「。」を出す方法 (2)かな入力時に「X」キーで「-」を出す方法 (3)かな入力時に、いちいちEnterキーを押して確定させるのではなく、かな入力→変換キー(数回)→次の文字を入力すれば自動的に確定 (4)かな入力時に、文字入力→無変換キーでカナ変換を行うのではなく、無変換キー1回でひらがな無変換、2回目でカナ変換 このような設定は出来ませんでしょうか? 教えて下さい。お願いします。
- 締切済み
- オフィス系ソフト
お礼
回答 ありがとうございます お礼が遅くなり、失礼しました このマクロは難しすぎます。 でも、最初の行から順に理解していけば、いつかは・・・・