[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エンターキーでマクロを実行』(マクロ初心者)
3日間、ネットや本で調べながらチャレンジしましたが、基礎がわかっていないので、専門家の方のご指導をお願いしたいと思います。
2つのシートで構成されたブックがあります。
Sheet2は非表示なので、Sheet1のみが表示されます。
C7〜L7のセル全部、またはそのいずれかに文字を入力しますが、漢字に変換して確定のためにリターンキーを押します。
カーソルは、リターンキーを押すことで各々1つ下のセル(C8〜L8)に移動することになりますが、この確定のためのリターンキーで特定のマクロを実行するようにしたいのです。
実行するマクロは完成していますが、リターンキーによる実行の方法がわかりません。
よろしくお願いします。
< 使用 Excel:Office365、使用 OS:Windows10 >
おはよ〜ございます。 ^^ 専門家ではありませんが、。。。^^;。。。m(_ _)m GetAsyncKeyState とかいうむつかし〜APIを使い無限ループ回すと監視は出来るのでしょうが ワークシートのチェンジイベントをお使いになった方が簡単、且つ効率的 なのではないか、。。。とか思うのですが ← 何故か弱気 (◎_◎;) 他の方の回答をお待ちくださいませ、私も共に学ばせて戴ければ幸甚です。 でわ。。。m(_ _)m (隠居じーさん) 2020/02/08(土) 06:21
application.onkey というのがあります。 こちらを参考にされてみてはどうでしょうか? https://ameblo.jp/blueskyame/entry-10278830817.html (Soul Man) 2020/02/08(土) 07:15
おはよ〜ございます。。。^^ なるほど。。。キー、にわりつけるのですね。 ハンドル。。変えられましたぁ? SoulMan さん ⇒ Soul Man さん 。。。(#^^#)v m(_ _)m 違うお方でしたら大変済みません。。。m(_ _)m (隠居じーさん) 2020/02/08(土) 07:47
(隠居じーさん) 2020/02/08(土) 08:15
(遠州灘) 2020/02/08(土) 09:37
C7〜L7のセル全部、またはそのいずれかに文字を入力しますが、漢字に変換して確定のためにリターンキーを押します。
Sheet1のシートモジュールに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C7:L7")) Is Nothing Then Application.OnKey "{ENTER}", "Test" Application.OnKey "~", "Test" Else Application.OnKey "{ENTER}" Application.OnKey "~" End If End Sub
標準モジュールに
Sub Test()
With ActiveCell .Offset(1).Select MsgBox .Address(0, 0) & "セルに「" & .Value & "」と入力しました。" End With End Sub
(ピンク) 2020/02/08(土) 10:38
おぉぉっぉ、、出来ましたぁ。。。 >Application.OnKey "~" これを追加するのですね? 勉強になりますねぇ(^^;
ありがとうございます。 (SoulMan) 2020/02/08(土) 16:24
いろいろとご教授、ありがとうございます。
ピンク様のご回答内容で確認してみます。
遠州灘様のアドバイスにありましたが、
何をやりたいのかをご説明します。
何か良いやり方があれば、教えて下さい。
1.Sheet1のC7〜L7のセル全部、またはそのいずれか(1個セル〜10個セル)に
文字を入力しますが、セルへの入力が完了したら、他のセル(A4)の値を変更
2.A4の値(0か1)を受けて、W8〜W3000にあるIF文の結果が変化する。(W列のIF文は基本同じ)
問題(悩んでいる事)は、C7〜L7のセルへの入力が未かどうかは、countblank関数を使って
10か10未満かで判断できるのですが、入力開始・完了のタイミングが判断できないので
「エンターキーでマクロを実行」で質問させて頂きました。
1回目のエンターキーは分かりますが、その後は0回なのか9回なのかが分からないので
エンターキーを押した回数をカウントしてcountblank関数の結果と照合しようかと考えて
いました。
しかし、よく考えると、1回目のエンターキーでA4の値(0か1)が入ったら、
2回目以降のエンターキーは無視できる(A4の値を再度変更させたくない)ので
そのように>Application.OnKey "~"をON/OFFできたら解決できるように思えてきました。
よろしくお願いします。
(マクロ初心者) 2020/02/08(土) 21:19
ON OFFはピンクさんのコードの中に既にあるので ここからの設計思想は、ご自身じゃないとわからないんじゃないでしょうか?
VBAでもCOUNTIFとかは使えますから、どんな条件にするかですよね?
一度、日本語で文書化してみてはどうでしょうか?
あるいは、Enter以外のKeyに割り付けるのもいいかもです。 (SoulMan) 2020/02/08(土) 21:34
しかし、よく考えると、1回目のエンターキーでA4の値(0か1)が入ったら、 2回目以降のエンターキーは無視できる
A4セルは数式を仕込んでいる?マクロで書き換えている?
0と1の違いは、他にどう影響します?
>W8〜W3000にあるIF文の結果が変化する。(W列のIF文は基本同じ)
IF文というのはVBAの話ですか?
それとも数式のIF関数のことですか?
回答側はあなたのパソコンが見えないので、
あなたは解っていても、他の人は解らないと思いますが。。。。?
あと、専門家はこんなとこで書き込みしている暇はないかと。。。。
皆で助け合って、いい方向に進めたらいいなと思います。
(まっつわん) 2020/02/08(土) 22:08
ありがとうございます。
今までのご回答を基に再度検討してみます。
(マクロ初心者) 2020/02/08(土) 22:17
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.