OpenOffice.org Calcでは、セル内の文字を、一部分だけ書き直したり、書き加えたりしたいとき、
[ENTER]キーを押すと簡単に再編集できますが、
Excelでは、同じようにセル内を再編集しようと思っても、
そのセルをダブルクリックするか、[F2]キーを押すしか方法がないのでしょうか?
[ENTER]キーを押しても下のセルに移動するだけでした・・。
できれば、Excelでも、OpenOffice.org Calcと同じように
[ENTER]キーでセル内の再編集をしたいのですが
キーの割り当てを替えたりできないのでしょうか?
また、私はExcel2000を使用しているのですが、
他のバージョンのExcel(98 XP 2003など)でも
セル内の再編集キーは[F2]のみですか?
No.6ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。今は、細かいところは見ていませんが、
>空白セル上で[ENTERキー]を押しても変わらず下のセルに移動するのみでした。
それは、どこか、マクロの呼び出しが抜けてしまったか、イベントが終わってしまっているようです。
この種のクラス-インスタンスは、一旦、作り上げたものを、あちらこちら、手を入れると、今までの内容とは違ったスタイルになってしまいます。この場合は、複数のイベントをおいていますので、思った以上に複雑です。
はなはだ、勝手なお願いかもしれませんが、ご自身でお使いになり改編されるのはかまいませんが、それを、私自身にフィードバックされても、それに対しては、良いも悪いも言えないことを申し上げておきます。
私は、ご質問者がダメを押された場合は、1・2度は手を入れますが、それ以上、追いかけることはしておりません。多くは、無駄足になることが多いからです。
ここの掲示板は、この種の上級の問題に関して、ご満足のいけるものは、私では無理のようです。もし、コードをお分かりになるのでしたら、この辺で、引き下がらせていだたきます。
仕様に関わる問題に関しては、ご相談があれば、ある程度のアドバイスはしても、私自身は、最初に申し上げたように、手を入れないということにしています。
お力になれずに申し訳ありません。
最後までお付き合いいただきありがとうございます。
[No.5の回答に対する私の補足文]の書き方が悪かったように思いましたので
最後に、補足の補足だけさせてください。
> 空白セル上で[ENTERキー]を押しても変わらず下のセルに移動するのみでした。
> また今まで気付かなかったのですが、
> 矢印キーでセルを移動していくとき、途中で既存セル(数式の入力されているセル)を通過してから、
> 空白セルに直接入力すると副産物(余分に必要なENTERキー)が発生しました。
> さらに、途中で既存セルを通過してから、空白セル上で[ENTERキー]を押すと
> 1つ下のセルが編集モードになるという現象も発生しました。
上記の文は、[No.4の回答]と[No.5の回答]で書いていただいたマクロのみを
私自身の手は加えずに適応した時の結果です。
具体的には[No.4の回答]で書いていただいたマクロのうち、
[No.5の回答]で書いていただいた部分のみ(MyEdit)を修正したものです。
以上、補足の補足です。
何度もお手数をおかけしてすみませんでした。
Excelの操作性が抜群に向上し、
また、マクロにも初めて触れることができました。
今までは[操作を短縮したり自動化するモノ]程度の認識でしたが
マクロも知恵と工夫でナンデモできるプログラム言語なんだなと実感した次第です。
大変長きに渡り回答を頂き、誠にありがとうございます。
No.5
- 回答日時:
こんばんは。
Wendy02です。>If ActiveCell.HasFormula Or Not ActiveCell.Value <> "" Then
> ↓
>○If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
それは、完全なミスです。本来は、もうひとつ、条件式があったのを抜いたために、そのようなコードになってしまいました。それは、本来は、配列数式を排除するために、一行の中で、HasArray プロパティを取ろうとしたのです。しかし、それを加えても首尾に終わってしまいました。もうひとつ、別の条件式しないといけないのでした。
○が正しいです。すみません。
>空白の何も入力されていないセル上で
>[編集モードにする]のと[1つ下のセルに移動]のとドッチの方が便利か自分でも迷っています。
それについては、以下のようにすればよいかなって思います。あまり変化を感じないです。他の表計算のように、別なコマンドで、数式を入れなくてはならない、というなら別ですが、Excelの場合は、=, +, - や数字を入れれば、入力モードになるので、あまり必要性はないように思います。
Sub MyEdit()
'Enterキーの再設定
On Error GoTo ErrHandler
If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
Call SetOffkey
Application.SendKeys "{F2}"
ElseIf ActiveCell.Value = "" Then '変更箇所
Application.SendKeys "{F2}" '変更箇所
MoveDirections
End If
Exit Sub
ErrHandler:
Application.SendKeys "{F2}"
Call SetOffkey
End Sub
#2 のお礼の中で、
>なんとなく敷居が高い気がして、これまでマクロを使ってこなかったので全然知りませんでした。お恥ずかしい。。
macadさんは、良く、私のこのようなコードをポイントを押さえて読めますね。マクロを書かなくても、才能があるのですね。私は、最近、特にそういう人の才能がうらやましく思います。たぶん、そういう人は、語学も出来ることが多いようです。
この回答への補足
再修正ありがとうございます。
プログラム言語はPerlをかじったコトがあります。
なので条件式とかは理解できるのですが
それ以外の部分はネットで検索、また検索の繰り返しです。
あと語学はけっこう悲惨ですよ(笑・・えない(^_^;
では結果報告です。
再修正したところ残念ながら
空白セル上で[ENTERキー]を押しても変わらず下のセルに移動するのみでした。
また今まで気付かなかったのですが、
矢印キーでセルを移動していくとき、途中で既存セル(数式の入力されているセル)を通過してから、
空白セルに直接入力すると副産物(余分に必要なENTERキー)が発生しました。
さらに、途中で既存セルを通過してから、空白セル上で[ENTERキー]を押すと
1つ下のセルが編集モードになるという現象も発生しました。
以上が今回の結果です。
教えていただいたマクロを見比べたり
自分なりに書き換えて試行錯誤してみたところ、
'*********************************************
'------------------------------------------------
'クラスモジュール(Class1)
'Option Explicit
Public WithEvents App As Application
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Application.SendKeys "{ESC}"
Application.EnableEvents = True
End Sub
Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Target.Value <> "" Then
Call SetKey
Else '■追加箇所■
Call SetOffkey '■追加箇所■
End If
Application.EnableEvents = True
End Sub
'------------------------------------------------
まず上記のようにクラスモジュールを変更すると
既存セル通過後の空白セルでの現象をクリアでき
空白セル上で直接入力→編集モードになり、入力後は1回のENTERで下のセルに移動
空白セル上で[ENTER] →編集モードにはならず下のセルに移動
既存セル上で[ENTER] →編集モードになり、入力後は1回のENTERで下のセルに移動
という仕様になりました。
'************************************************
'************************************************
'------------------------------------------------
'クラスモジュール(Class1)
'Option Explicit
Public WithEvents App As Application
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Application.SendKeys "{ESC}"
Application.EnableEvents = True
End Sub
Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
' If Target.Value <> "" Then '■変更箇所(コメントアウト)■
Call SetKey
' End If ' '■変更箇所(コメントアウト)■
Application.EnableEvents = True
End Sub
'------------------------------------------------
'------------------------------------------------
'標準モジュール(一部分)
Sub MyEdit()
'Enterキーの再設定
On Error GoTo ErrHandler
If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
Call SetOffkey
Application.SendKeys "{F2}"
ElseIf ActiveCell.Value = "" Then '変更箇所
Call SetOffkey '■追加箇所■
Application.SendKeys "{F2}" '変更箇所
' MoveDirections '■変更箇所(コメントアウト)■
End If
Exit Sub
ErrHandler:
Application.SendKeys "{F2}"
Call SetOffkey
End Sub
'------------------------------------------------
また、上記のようにクラスモジュールと標準モジュールを書き換えると、
空白セル上で直接入力→編集モードになり、入力後は2回のENTERで下のセルに移動(例の副産物)
空白セル上で[ENTER] →編集モードになり、入力後は1回のENTERで下のセルに移動
既存セル上で[ENTER] →編集モードになり、入力後は1回のENTERで下のセルに移動
という仕様になりました。
'*************************************************
理想としては、
空白セル上で直接入力→編集モードになり、入力後は1回のENTERで下のセルに移動
空白セル上で[ENTER] →編集モードになり、入力後は1回のENTERで下のセルに移動
既存セル上で[ENTER] →編集モードになり、入力後は1回のENTERで下のセルに移動
のような仕様になると完全にOpenOffice.org Calcの操作感が再現できるのですが、
さすがに難しいですね・・・。
No.4
- 回答日時:
こんばんは。
Wendy02です。あれから手直しをして、しばらく様子を見てみました。これでどうでしょうか?
新規入力の際に、Enter を入れて確定した後、入力モードは閉じますが、カーソルは移動しません。もう一度、Enter を入れると、次に進みます。
このマクロの問題点は、配列数式に対して、配列確定を解除してしまう問題があります。
おそらく、他にも配列領域設定をされたところでは、エラーを出してしまうと思います。
(たぶん、その問題は、解決するはずです。)
エラーを出すと、現在では、マクロを解除してしまいます。また、セルを移動すれば、マクロは再設定されます。
もうひとつは、セルの移動を用いたマクロに関しては、間違いなく誤動作します。(これも解決は可能性あり)また、複雑なマクロに対しても、どう影響をするかは分かりません。
今は、そこまでは手が回っていません。これは、なかなか、長く時間が掛かりそうな気がします。
今の段階では、SetKey とSetOffkey をトグルにしたボタンに取り付ければ、良いような気がします。
なんといっても、これは仕様に関わる、変更マクロですので、あらゆる問題に対して、装備しないといけないので、通常のマクロとは、桁違いに難しいです。
それでも、一定の場所で使う分なら、支障はないはずです。
'------------------------------------------------
'クラスモジュール(Class1)
'Option Explicit
Public WithEvents App As Application
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Application.SendKeys "{ESC}"
Application.EnableEvents = True
End Sub
Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Target.Value <> "" Then
Call SetKey
End If
Application.EnableEvents = True
End Sub
'------------------------------------------------
'標準モジュール
'Option Explicit
Public myClass As New Class1
Public intDrc As Integer
Public Enum MRD
MR = xlToRight&
MU = xlUp&
ML = xlToLeft&
MD = xlDown&
End Enum
Sub Auto_Open()
Set myClass.App = Application
SetKey
End Sub
Sub SetKey()
'キーの設定
Application.OnKey "{Enter}", "myEdit"
Application.OnKey "~", "myEdit"
Application.EnableEvents = True
End Sub
Sub MyEdit()
'Enterキーの再設定
On Error GoTo ErrHandler
If ActiveCell.HasFormula Or Not ActiveCell.Value <> "" Then
Call SetOffkey
Application.SendKeys "{F2}"
Else
MoveDirections
End If
Exit Sub
ErrHandler:
Application.SendKeys "{F2}"
Call SetOffkey
End Sub
Sub MoveDirections()
On Error Resume Next
intDrc = Application.MoveAfterReturnDirection
Select Case intDrc
Case MRD.MR: ActiveCell.Offset(, 1).Select
Case MRD.MU: ActiveCell.Offset(-1).Select
Case MRD.ML: ActiveCell.Offset(, -1).Select
Case MRD.MD: ActiveCell.Offset(1).Select
End Select
On Error GoTo 0
End Sub
Sub SetOffkey()
'キーの設定解除
Application.OnKey "{Enter}"
Application.OnKey "~"
End Sub
修正ありがとうございます♪
修正していただいたマクロを試したところ、
見事、前回の副産物(余分に必要なENTERキー)は解消しました。
新規で数式を入力してもスムーズに下のセルに移れます。
他のマクロによる誤動作も、マクロ初体験の私には
今のところ他のマクロ自体が存在しないので問題なさそうです。
ただ、既に数式の入っているセルを編集しようと[ENTERキー]を押しても
なぜか下のセルに移動するだけで、編集できませんでした。
そこで、
If ActiveCell.HasFormula Or Not ActiveCell.Value <> "" Then
↓
If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
のように、書き換えたところ修正前のように編集できるようになりました。
この勝手な書き換えで問題ないか不安です( ;^^)ヘ..
あと、空白の何も入力されていないセル上で[ENTERキー]を押したときの動作について、
[編集モードにする]のと[1つ下のセルに移動]のとドッチの方が便利か自分でも迷っています。
空白の何も入力されていないセル上で[ENTERキー]を押した時も
[編集モードにする]場合は、ドコを書き換えればいいのでしょうか。
No.3
- 回答日時:
こんにちは。
Wendy02です。返事が遅くなってすみません。>なんとなく敷居が高い気がして、これまでマクロを使ってこなかったので
言い出した私も、このマクロは敷居が高いのですね。毎日、数個、年間で500近くのマクロを書いていても、いつも原付の人が、二種免許でお客さんを乗せるぐらいの差があります^^;。
年に1度ぐらいしか書かないマクロです。(=今年初めて)
ですから、これはまずいなって思ったら、すぐさま、降車してくださいね。
仕様としては、#2 で書いていた通りで、空白(Empty)ではないセル、または数式のセルに対しては、Enter を押すと、F2 キーが発生する、というものになります。しかし、新規で数式を入れた後に、2回、Enter キーを入れない、解放されない、という副産物があります。
まあ、使わないで、眺めて、ここはどうとか、こうとか解析していただいてもよいです。考え方が分かれば、また、それも勉強にもなりますからね。今のところ、これは、Excel 2003 だけでしか、検査しておりません。たぶん、大丈夫だと思います。
なお登録場所は、個人用マクロブック(Personal.xls)です。貼り付けが終わったら、出来れば、プロジェクトのプロパティで、パスワード・ロックしたほうが、後々、開いていじってしまった、などということがなくなります。一旦、Excelを終了して、再度立ち上げれば、新規ブックでも同じように設定されています。
'----------------------------------------------------------------
'挿入-クラスモジュール
'Class1
Public WithEvents App As Application
Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call Setkey
End Sub
'----------------------------------------------------------------
'挿入-標準モジュール
'標準モジュール
'Option Explicit
Public myClass As New Class1
Private Enum MRD
MR = xlToRight&
MU = xlUp&
ML = xlToLeft&
MD = xlDown&
End Enum
Sub Auto_Open()
Set myClass.App = Application
End Sub
Sub Setkey()
'キーの設定
Application.OnKey "{Enter}", "myEdit"
Application.OnKey "~", "myEdit"
End Sub
Sub MyEdit()
'Enterキーの再設定
On Error GoTo ErrHandler
If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
Application.SendKeys "{F2}"
Call SetOffkey
Exit Sub
End If
On Error Resume Next
Select Case Application.MoveAfterReturnDirection
Case MRD.MR: ActiveCell.Offset(, 1).Select
Case MRD.MU: ActiveCell.Offset(-1).Select
Case MRD.ML: ActiveCell.Offset(, -1).Select
Case MRD.MD: ActiveCell.Offset(1).Select
End Select
On Error GoTo 0
Exit Sub
ErrHandler:
Application.SendKeys "{F2}"
Call SetOffkey
End Sub
Sub SetOffkey()
'キーの設定解除
Application.OnKey "{Enter}"
Application.OnKey "~"
End Sub
この回答への補足
マクロ作成、ありがとうございます。
ENTERキーで再編集できるようになってExcel2000も、とても操作しやすくなりました。
また個人用マクロブックへの登録のおかげで
起動時にいちいち「マクロを有効にする」を選択しなくていいので快適ですね。
実は、個人用マクロブックというもの自体、今まで知りませんでした。
ただ、やはりというか、、副産物がなかなか くせ者ですね(^_^;)
ENTERキー1回分でも、今までの慣れのせいで違和感が大きいです。
この副産物を修正できないものかと
新規入力時と編集時で動作(ENTERキーを押す回数)が違うのに着目して
この2つの判定をしていそうな
If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
Application.SendKeys "{F2}"
Call SetOffkey
Exit Sub
End If
を、
'If ActiveCell.HasFormula Or ActiveCell.Value <> "" Then
Application.SendKeys "{F2}"
Call SetOffkey
Exit Sub
'End If
のようにコメントアウトしたのですが、
副産物は変わりませんでした。。
やはり、こんな簡単な問題じゃないんですね・・。浅はかでした。。
できれば、どうして新規入力時に2回のENTERキーが必要になってしまうのか教えてほしいです。
また、上記のようにコメントアウトしていても支障はないでしょうか?
No.2
- 回答日時:
こんにちは。
>できれば、Excelでも、OpenOffice.org Calcと同じように
>[ENTER]キーでセル内の再編集をしたいのですが
>キーの割り当てを替えたりできないのでしょうか?
私個人は、なるべく、他人のPCをいじるときに、まごつかないように、キーの設定は替えないようにはしていますが、やってみると、なるほどね、おっしゃるとおり、確かに、便利ですね。考えたこともありませんでした。
ただ、個別のブックにキーを設定するなら、それほど難しくはありませんが、グローバルにマクロを適用するには、どうやらApplicationに対する クラスイベントを設けなくてはならないようです。出し惜しみして申し訳ありませんが、それでもよければ、作ってみます。なお、バージョンには関係ありません。
仕様としては、空白(Empty)ではないセル、または数式のセルに対しては、Enter を押すと、F2 キーが発生する、というものになります。
回答ありがとうございます。
マクロというのは、そのような事までできるのですか・・。
なんとなく敷居が高い気がして、これまでマクロを使ってこなかったので
全然知りませんでした。お恥ずかしい。。
もしWendy02さんがよろしければ、お手数ですが引き続きご教授いただけますでしょうか。
よろしくお願いします。
No.1
- 回答日時:
キーのカスタマイズの有無については解りません。
セルの再編集キーは旧バージョンからずっと F2です。
これが変わったらずっと使っている人が逆に戸惑っちゃうと思います。
Windows95以降、表計算ソフトの世間一般でのデファクトスタンダードはExcelと言っても過言では無いでしょう。
現状では「長いものには巻かれろ」ってところかと、、、
私もExcelしか使ったことのなかった頃は、
気にもならなかったのですが、
OpenOffice.org Calcを使ってみて、
[ENTER]キーでの操作のしやすさに慣れてしまうと
Excelの[F2]キーが非常に煩わしく感じてしまいます。
なら、OpenOffice.org Calcだけを使えばいいのにって感じですが、
何にでも、メリット・デメリットはあるもので、
OpenOffice.org Calcの場合、ソフトの起動が尋常じゃなく遅いのがネックです・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel ヘルプの[ロック解除]、<c0>、</c0> の意味は何ですか? 1 2023/02/20 16:58
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- Excel(エクセル) 【Excel】エクセルで同じセル内でAltキーなしで改行 4 2023/07/19 00:01
- Excel(エクセル) MSさん、シッカリしてよ~んッ! 3 2023/01/30 13:15
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) MacのExcelでoptionキーを押したまま図形や画像を移動させると、複製されてしまう 2 2022/06/14 16:19
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
太字に設定されているセルの個...
-
Excel2007 色のカウント (VBA)
-
Excelでセルをクリックす...
-
Excel内での検索結果をシート...
-
アポストロフィーの一括挿入 ...
-
マクロを実行すると画像がズレ...
-
Excelで、図形内の文字をセルに...
-
クリックすると文章が表示され...
-
ページ内ハイパーリンクの表示...
-
現在のセルの位置を返す関数は...
-
エクセル VBA セルをクリ...
-
Excelで挿入した図をセルの中央...
-
【EXCEL】先週の月曜日の日付を...
-
Excel ハイパーリンクのURLを別...
-
エクセル シート保護された共...
-
エクセルでの検索ボックスの作...
-
Excelの関数で時刻を固定する方法
-
セルの値が変ると自動でマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
Excel内での検索結果をシート...
-
クリックすると文章が表示され...
-
Excelでセルをクリックす...
-
マクロを実行すると画像がズレ...
-
太字に設定されているセルの個...
-
Excelで、図形内の文字をセルに...
-
Excelで挿入した図をセルの中央...
-
フォントの色を指定して削除出...
-
Excel ハイパーリンクのURLを別...
-
エクセルでPDFリンクを大量...
-
エクセル 未入力セルがあると...
-
現在のセルの位置を返す関数は...
-
VBA 見つからなかった時の処理
-
EXCELのセルや文字色の反映
-
【EXCEL】先週の月曜日の日付を...
-
セルの値が変ると自動でマクロ...
-
エクセルでセルをダブルクリッ...
-
アポストロフィーの一括挿入 ...
おすすめ情報