Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10325 / 13644 ツリー ←次へ | 前へ→

【22401】セルの編集状態の解除 つん 05/2/18(金) 11:14 質問[未読]
【22402】Re:セルの編集状態の解除 IROC 05/2/18(金) 11:34 回答[未読]
【22403】Re:セルの編集状態の解除 Jaka 05/2/18(金) 12:03 発言[未読]
【22404】Re:セルの編集状態の解除 Jaka 05/2/18(金) 12:49 発言[未読]
【22405】Re:セルの編集状態の解除 つん 05/2/18(金) 13:06 お礼[未読]
【22409】Re:セルの編集状態の解除 Jaka 05/2/18(金) 13:44 発言[未読]
【22414】Re:セルの編集状態の解除 つん 05/2/18(金) 15:13 発言[未読]
【22443】Re:セルの編集状態の解除 Jaka 05/2/21(月) 9:22 発言[未読]
【22447】bykinさーーーん!! つん 05/2/21(月) 10:13 発言[未読]
【22454】Re:bykinさーーーん!! bykin 05/2/21(月) 12:34 発言[未読]
【22457】雑談ですみません(>_<) つん 05/2/21(月) 14:37 発言[未読]
【22460】Re:雑談ですみません(>_<) Jaka 05/2/21(月) 17:33 発言[未読]
【22461】関西クン bykin 05/2/21(月) 20:47 発言[未読]

【22401】セルの編集状態の解除
質問  つん E-MAIL  - 05/2/18(金) 11:14 -

引用なし
パスワード
   いつもお世話になります。
早速ですが、質問させていただきます。

VBAで、「セルの編集状態」を解除させるにはどうしたらいいんでしょうか?

以下のようなコードを書いてみました。

Sub test()

  Dim sngStart As Single
  Dim sngTime As Single
  
  sngTime = 5
  
  Range("a1").Value = ""

  sngStart = Timer
  Do While Timer < sngStart + sngTime
    DoEvents
    If Range("a1").Value <> "" Then
      Exit Do
    End If
  Loop
  
  If Range("a1").Value <> "" Then
    MsgBox "入力されました"
  Else
    MsgBox "時間切れです"
  End If
  
  Range("a2").Value = "おわり"
  
End Sub

時間内にA1になんらかのデータが入力されたかどうか?の判定するだけのコートです。
普通に入力して確定されたら、その時点で「入力されました」のメッセージボックスが出て、A2に「おわり」の文字列が入力されます。(まんまの説明じゃ・・)
で、なにもせずに放置してると、「時間切れです」のメッセージボックスが出ます。

ここで、入力途中で時間切れになった…つまり、A1が編集状態のままループを抜けてしまった場合、メッセージボックスは表示されますが、最後の、

 Range("a2").Value = "おわり"

でエラーが出てしまいます。
これを、If分の前に持ってきても、当然そこでエラーが出ます。

セルが編集状態になってる状態ではメッセージボックスを出す以外の処理が出来ないんですね?

これを、どうにか対処できないでしょうか?
コード内で、セルの編集状態の解除は出来ないのでしょうか?

Sendkey "{Enter}" を使ってみましたが無理なようでした。

宜しくお願いします。

【22402】Re:セルの編集状態の解除
回答  IROC  - 05/2/18(金) 11:34 -

引用なし
パスワード
   > Range("a2").Value = "おわり"
>でエラーが出てしまいます。

Win98、EXCEL2000ですが、エラーは発生せずに
MsgBox "時間切れです" を表示後、マクロが終了しました。

何のエラーになるのか教えていただけませんか?

【22403】Re:セルの編集状態の解除
発言  Jaka  - 05/2/18(金) 12:03 -

引用なし
パスワード
   つんさま、こんにちは。

Doeventsだとうまく判定してくれなかったので、

Sub test3()
  Application.OnTime Now() + TimeValue("00:00:05"), "判定"
End Sub

Sub 判定()
  If Range("a10").Value <> "" Then
    MsgBox "入力されました"
  Else
    MsgBox "時間切れです"
  End If
 
  Range("a11").Value = "おわり"
End Su

こんな風にしてみました。
結果、セル編集中という事でマクロが動いてくれませんでした。;_;

>コード内で、セルの編集状態の解除は出来ないのでしょうか?
出来ないと言うより、マクロが動かへんし。
テキストボックスを使った方が良いんじゃないかと思います。

PS
つんさんは、関西弁をどうやって変換してはるのでしょうか?
うまく変換でけへん。

【22404】Re:セルの編集状態の解除
発言  Jaka  - 05/2/18(金) 12:49 -

引用なし
パスワード
   >>コード内で、セルの編集状態の解除は出来ないのでしょうか?
>出来ないと言うより、マクロが動かへんし。
たわけた事を抜かしてました。Doeventsだと動くんですね。
ダミーの図形作って、それをアクティブにすると外れるみたいです。
でも、セル編集中のままだと、セル内容は取得できないみたいですね!
この辺うまく組み合わせて、

Sub test()
  Dim sngStart As Single
  Dim sngTime As Single
 
  sngTime = 5
  Range("a1").Value = ""
  sngStart = Timer
  Do While Timer < sngStart + sngTime
    DoEvents
    If Range("a1").Value <> "" Then
      Exit Do
    End If
    DoEvents
  Loop
  Application.ScreenUpdating = False
  ActiveSheet.Shapes("Oval 4").Select '←ダミーの図形
  Range("a1").Activate
  If Range("a1").Value <> "" Then
    MsgBox "入力されました"
  Else
    MsgBox "時間切れです"
  End If
  Range("a2").Value = "おわり"
  Application.ScreenUpdating = True
End Sub

【22405】Re:セルの編集状態の解除
お礼  つん E-MAIL  - 05/2/18(金) 13:06 -

引用なし
パスワード
   IROCさん、Jakaさん
早速のレスありがとうございました^^

IROCさん
>Win98、EXCEL2000ですが、エラーは発生せずに
>MsgBox "時間切れです" を表示後、マクロが終了しました。
あれ?そうでしたか?
「A2」にも文字列、ちゃんと入力されましたか?
うちはEXCEL2002なんですけど、バージョンの差なんかな?

>何のエラーになるのか教えていただけませんか?
それが、いろいろ試行錯誤してたんですが、
最初は「アプリケーションエラー」だったと思うんですが、
今は、「400」という数字が出るんですよね・・・
時々お目にかかりますが・・・これはなんやろう?


Jakaさん
>ダミーの図形作って、それをアクティブにすると外れるみたいです。
>でも、セル編集中のままだと、セル内容は取得できないみたいですね!
>この辺うまく組み合わせて、
ご提示していただいたコード実行してみました。
上手く行きました!ええ感じでございます。
図形をアクティブにすることによって、セル編集解除できるんですね。
でも、そのためにダミーの図形をおくってのもなあ・・・
あ、図形をおいてある部分を非表示にしておけばいいのか!
ユーザーフォームで作ってもいいんだけど、
ワークシートで作ってきたんで、このやり方でいきますわ。
どもありがとー(^o^)ノ

ところで、私の関西弁は、漢字とかとの兼ね合いで一発変換できへんときは、
標準語で入力しといて、いちいち送りがなを打ち直したりしてますねん。
めちゃめんどー(T_T)
最新のATOK君やったら、対応してんのかな?

【22409】Re:セルの編集状態の解除
発言  Jaka  - 05/2/18(金) 13:44 -

引用なし
パスワード
   >図形をアクティブにすることによって、セル編集解除できるんですね。
>でも、そのためにダミーの図形をおくってのもなあ・・・
えっと、セル編集解除のためだけではないです。
編集解除しないとセルの値が取得できないので、つねに
"時間切れです"
ってなってしまうのを防ぐためでもあります。

>ところで、私の関西弁は、漢字とかとの兼ね合いで一発変換できへんときは、
>標準語で入力しといて、いちいち送りがなを打ち直したりしてますねん。
関西弁使う人って、大変なんですねぇ!

【22414】Re:セルの編集状態の解除
発言  つん E-MAIL  - 05/2/18(金) 15:13 -

引用なし
パスワード
   Jaka さん、どもども

>えっと、セル編集解除のためだけではないです。
>編集解除しないとセルの値が取得できないので、つねに
>"時間切れです"
>ってなってしまうのを防ぐためでもあります。

ああ、そっか・・・

>関西弁使う人って、大変なんですねぇ!

うん。大変どす……って、別に無理に関西弁でかかんでもええんですけどね(笑)
関西弁って、丁寧語だけど堅苦しくなりすぎない表現が出来て、結構便利です♪

【22443】Re:セルの編集状態の解除
発言  Jaka  - 05/2/21(月) 9:22 -

引用なし
パスワード
   おはようございます。

ろくに考えずにまんまのコード使ってしまいましたが、よく考えたら下のIF文意味ないですね!
セル編集中は、セルの値を取得できないからIF文の中に入る事は無いですね!
その辺、うまく処理してください。

>  Do While Timer < sngStart + sngTime
>    DoEvents
>    If Range("a1").Value <> "" Then
>      Exit Do
>    End If
>    DoEvents
>  Loop

ところで、
>いちいち送りがなを打ち直したりしてますねん。
bykinさんも同じ事していると思います?

【22447】bykinさーーーん!!
発言  つん E-MAIL  - 05/2/21(月) 10:13 -

引用なし
パスワード
   Jaka さん、おはようさんです^^

>ろくに考えずにまんまのコード使ってしまいましたが、よく考えたら下のIF文意味ないですね!
>セル編集中は、セルの値を取得できないからIF文の中に入る事は無いですね!
>その辺、うまく処理してください。
はい。
私が作ってるのでは、もちっといろいろ処理してて、フラグ変数使ったりしてます。
とりあえず、うまくやってる・・・はず

>>いちいち送りがなを打ち直したりしてますねん。
>bykinさんも同じ事していると思います?
んーー、たぶん・・・本人に聞いてみましょう!
bykinさーーん!どうなんですの?

【22454】Re:bykinさーーーん!!
発言  bykin  - 05/2/21(月) 12:34 -

引用なし
パスワード
   あー驚いた(^^;;
そない大声出さんでも・・・って、お呼びでっか?

>>>いちいち送りがなを打ち直したりしてますねん。
>>bykinさんも同じ事していると思います?
>んーー、たぶん・・・本人に聞いてみましょう!
>bykinさーーん!どうなんですの?

してますしてます(笑)
でもそんなに変換ミスなんて出えへんけどな?

あっ!そーか。
漢字知らんもんで、ひらがなばっかし使ってるからですわ(^^;;

でも、短い文節ごとに変換かけたら、IME君もそんなに間違わんと思うよ(笑)
ほな。

【22457】雑談ですみません(>_<)
発言  つん E-MAIL  - 05/2/21(月) 14:37 -

引用なし
パスワード
   bykin さん

どもども^^
なにやらご無沙汰です・・って私が不義理をしてると思う(T_T)

>でも、短い文節ごとに変換かけたら、IME君もそんなに間違わんと思うよ(笑)
>ほな。

「思わへん?」とかのときに、「思う」→「う」削除→「わへん?」添付
とかせーへんですか?

【22460】Re:雑談ですみません(>_<)
発言  Jaka  - 05/2/21(月) 17:33 -

引用なし
パスワード
   つん さん、bykin さん こんにちは。

IMEでも少しは学習させると少しは大丈夫みたいでした。
でも、他でおかしくなる事がありました。

もっとも、私の日本語入力が、ダメダメですから...。
自分のスレッドを読むと意味不明文がたくさんありますし。

【22461】関西クン
発言  bykin  - 05/2/21(月) 20:47 -

引用なし
パスワード
   つんはん、Jakaはん、こんばんわ。

>「思わへん?」とかのときに、「思う」→「う」削除→「わへん?」添付
>とかせーへんですか?

「思わへん」→「主輪変」(笑)

わては「思わん」を使ってるさかいね。気ぃ付きまへんでした。
「思わん」やったら一発変換でっせ。

>IMEでも少しは学習させると少しは大丈夫みたいでした。

辞書登録しとけばええんやろね。面倒くさいけど。

ま、お二人には↓これ、お勧めしときまっさ(笑)
http://piro.sakura.ne.jp/appendix/knskn.html

ほな。

10325 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free