Excel VBA質問箱 IV

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

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


6610 / 13646 ツリー ←次へ | 前へ→

【44218】RefEditを使用したあと ワークス 06/11/9(木) 22:57 質問[未読]
【44227】Re:RefEditを使用したあと りん 06/11/10(金) 12:31 発言[未読]
【44230】Re:RefEditを使用したあと 仕様です 06/11/10(金) 13:40 発言[未読]
【44253】Re:RefEditを使用したあと ワークス 06/11/10(金) 22:05 質問[未読]
【44259】Re:RefEditを使用したあと ichinose 06/11/11(土) 0:39 発言[未読]
【44261】Re:RefEditを使用したあと ワークス 06/11/11(土) 3:55 お礼[未読]

【44218】RefEditを使用したあと
質問  ワークス  - 06/11/9(木) 22:57 -

引用なし
パスワード
   IMEが半角に固定されてしまいます。
一度エクセルを終了すれば解除されるんですが、なぜでしょう?
RefEditのフォームの終了の仕方がまずいのでしょうか?
Me.Hideではいけないのでしょうか?

【44227】Re:RefEditを使用したあと
発言  りん E-MAIL  - 06/11/10(金) 12:31 -

引用なし
パスワード
   ワークス さん、こんにちわ。

>IMEが半角に固定されてしまいます。
>一度エクセルを終了すれば解除されるんですが、なぜでしょう?
>RefEditのフォームの終了の仕方がまずいのでしょうか?
>Me.Hideではいけないのでしょうか?

WinXP & XLXPですが、再現できません(シートに戻るとちゃんと漢字になります)。
何をどう困っているかを詳細に書かないと伝わらないと思います。

【44230】Re:RefEditを使用したあと
発言  仕様です  - 06/11/10(金) 13:40 -

引用なし
パスワード
   記事番号: 15528

unloadで回避、必要なデータは変数かセルへ

【44253】Re:RefEditを使用したあと
質問  ワークス  - 06/11/10(金) 22:05 -

引用なし
パスワード
   申し訳ありません。
当方winXP、Excel2003の環境です。
状況としてはユーザーフォーム1のコマンドボタンからRefEditのついた
ユーザーフォーム2を呼び出し、RefEditで選んだ範囲を他のシートにコピペする、
という感じです。
ユーザーフォーム1にはコマンドボタンが3つあり(2つを選択、1つは閉じる)、
選択するコマンドボタンを押すとそれぞれに対応したユーザーフォームが現れます。(このユーザーフォーム1のコマンドボタンに***.show
Me.Hideとなってます)
ユーザーフォーム2にはRefEditとコマンドボタン(ただのokボタン、コードは下記)しかないもので、ここで閉じてもまだIMEのロックはかかりません。RefEditの機能を使ってセル範囲選択を呼び出し処理をするとIMEが固定されます。コマンドボタンを押すと下記のコードが実行されます。

Application.ScreenUpdating = False
  Range(Me.RefEdit1.Value).Copy
  Sheets("作業用").Select
  Range("a2").Select
      Selection.PasteSpecial Paste:=xlPasteValues,        Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("a1").Select
  Sheets("一覧").Select
    Application.CutCopyMode = False
      Range("a1").Select
  Me.Hide
End Sub

Me.Hideを最初はunload Meにしてたのですが結果は一緒でした。
ちなみにコピペするセルはすべて書式は数値になってます。
またRefEditのプロパティのIMEModeは0-fmIMEModeNoControlになってます。

【44259】Re:RefEditを使用したあと
発言  ichinose  - 06/11/11(土) 0:39 -

引用なし
パスワード
   こんばんは。

>申し訳ありません。
>当方winXP、Excel2003の環境です。
この現象、Win2000 & Excel2002 SP-3でも確認しました
(Win98&Excel2000でも確認しました)。


再現手順

・まず、新規ブックにふたつのユーザーフォームを作成してください。
 ユーザーフォームのコントロール配置は以下のとおりです。

 UserForm1   
   コマンドボタン(Commandbutton1)を配置
   
 UserForm2
   RefEdit コントロール(RefEdit1)
   コマンドボタン(CommandButton1)
   のふたつのコントロールを配置
   
 
 次にコードです。

 標準モジュールに
'================================================================
Sub main()
  UserForm1.Show
End Sub


UserForm1のモジュールに
'================================================================
Private Sub CommandButton1_Click()
  UserForm2.Show
  Unload Me
End Sub


UserForm2のモジュールに
'================================================================
Private Sub CommandButton1_Click()
  Unload Me
End Sub


上記のコードを所定のモジュールにコピーします。


1. mainを実行してください。

2. UserForm1が表示されます。
  UserForm1にあるコマンドボタンをクリックしてください。

3. UserForm2が表示されます。

4. RefEditコントロールを選択し
  (表示直後はRefEditにフォーカスがあります)、
  ここにセルアドレスが表示されるようにシート上のセル範囲を選択してください。
  (例セルA1〜A40を選択する)

5. セルアドレスがRefEditコントロールに表示されたら、コマンドボタンを
  クリックしてください。
  UserForm2が消去され、次いでUserForm1が消去されます。

6. セルが選択された状態に戻ります。ここでIMEのモード切替を行ってみてください。
  切り替えが出来なくなっています。


RefEditコントロールはバグが多いですからねえ!!

www.h3.dion.ne.jp/~sakatsu/Excel_Tips08.htm


回避方法1

UserForm1の上にUserForm2を重ね表示は行わない。


UserForm1のモジュールを

'===============================================================
Private Sub CommandButton1_Click()
  Me.Hide
  UserForm2.Show
  Unload Me
End Sub

とすると、UserForm2を表示する直前にUserForm1が非表示になりますが、

これで上記の再現操作を行ってもIMEのモードの切り替えは可能です。
(Excelから立ち上げなおして試してみてください)


回避方法2
 RefEditコントロールを使用せず、InputBoxメソッドを使う。

UserForm1のモジュールを
'==================================================================
Private Sub CommandButton1_Click()
  On Error Resume Next
  Dim rng As Range
  Set rng = Application.InputBox("範囲を指定して下さい", , , , , , , 8)
  Unload Me
End Sub


として、上記の再現手順で操作してみてください。
この場合もIMEのモードの切り替えは可能です。


検討してみてください。

【44261】Re:RefEditを使用したあと
お礼  ワークス  - 06/11/11(土) 3:55 -

引用なし
パスワード
   やはりバグなんですねぇ…
あきらめて他の方法を検討します。

みなさまありがとうございました。

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