[[20211125104012]] 『VBAで新規作成したブックで、セル選択位置の挙動ax(橋脚) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで新規作成したブックで、セル選択位置の挙動が変』(橋脚)

SaveAsで、マクロ有効ブック(.xlsm)を新規作成しています。
そこ作成できたブックを開いた際、選択したセルが正しく選ばれないバグに見舞われています。

具体的には、
 ・ブックを開いて最初から表示されている範囲内は、問題なく選べる。
 ・スクロールしてしまうと、横軸(x軸)は同じだが、縦軸(y軸)で違うセルが選ばれてしまう。
 ・それも、最初に表示された範囲内のものからしか選べない。

どうやら、スクロールしていないことになってしまって、セルを正しく選べていないようです。

実は、新規作成する際に、新しく作るブックのVBEを操作しています。
具体的には、VBComponentsオブジェクトで、別モジュールをインポートしたり、コードを追記したりしています。
(参考:http://www.officetanaka.net/excel/vba/vbe/

いろいろ試してみて、この部分を削ってから新規作成すれば、セル選択の不具合がキレイサッパリ解消されることを確認しています。
また、不具合のあるブックから、マクロ部分を全て消去したところ、同様に解消しました。

根本設計から考え直す必要がある気もしていますが、何か解決策があればご教示ください。
よろしくお願いします。

< 使用 Excel:Office365、使用 OS:Windows10 >


>実は、新規作成する際に、新しく作るブックのVBEを操作しています。
>具体的には、VBComponentsオブジェクトで、別モジュールをインポートしたり、コードを追記したりしています。

>いろいろ試してみて、この部分を削ってから新規作成すれば、セル選択の不具合がキレイサッパリ解消されることを確認しています。
>また、不具合のあるブックから、マクロ部分を全て消去したところ、同様に解消しました。

問題箇所特定のために必要な情報はこのコードだろうと思います。

あと差し当たって思いつくのは、「ウィンドウ枠の固定」が設定されていないか確認してみてください。
(きまぐれおじさん) 2021/11/25(木) 11:03


コードの情報ですが、例えば wbは、新規作成するブックへのパスとして、

wb.VBProject.VBComponents.Import "C:\vba\Module1.bas"

この一行を足すだけでも不具合に陥ります。
なお、足したマクロ自体については、問題なく動作しています。

「ウィンドウ枠の固定」については、全く設定していません。
不具合の解消のときに、マクロ部分を除去するだけで直ったことから、純粋にマクロを足す・足さないの問題なのかなと想像しています。
(橋脚) 2021/11/25(木) 11:17


>選択したセルが正しく選ばれないバグ
ピンと来ないんですよね・・・

選択とは、どういう事をやったか、(クリック?)
結果、どうなったか、
ある程度具体的に教えてもらえませんか?
(tkit) 2021/11/25(木) 11:20


選択とは、ご想像の通りクリックすることです。

通常、A1番地のセルをクリックしたら、数式バーにはA1の値が表示され、A1セルは太枠で囲われる動作になるかと思います。
ですが、例えば、スクロールダウンして登場するA38番地のセルをクリックしても、数式バーにはA8の値が表示され、A8セルが太枠で囲われる、といった状況です。

伝わっておりますでしょうか?
(橋脚) 2021/11/25(木) 11:27


コード上には、SelectionChange イベントはありますか?
(tkit) 2021/11/25(木) 11:35

使っていません。

ただ、
 ・Change
 ・BeforeDoubleClick
 ・Activate
は使っています。
(橋脚) 2021/11/25(木) 11:39


経験したことが無いので、切り分けのアドバイスだけですが。

インポートするモジュール内の
各プロシージャを順にコメントアウトして、
同様の症状が出るか確認されては。

まず、コードに依存するか確認して、
コードならば原因がハッキリすると思います。
(tkit) 2021/11/25(木) 11:46


追加するマクロのコードが原因ではないと考えています。問題はマクロを追加するか否かに絞られているようです。

実際のコードを簡単にお示しすると以下の通りです。

Sub test()

    Dim filename As String
    filename = "debug.xlsm"

    Dim newBook As Workbook
    Set newBook = Workbooks.Add
    'いったん作成
    newBook.SaveAs filename:="C:\vba\" & filename, FileFormat:=xlOpenXMLWorkbookMacroEnabled

    Dim wb As Workbook
    Set wb = Workbooks(filename)
    'マクロを追記
    wb.VBProject.VBComponents.Import "C:\vba\Module1.bas"
    Workbooks(filename).Save
    Workbooks(filename).Close
End Sub

これで作成されたファイルにおいて、上記のようなセル選択ずれの不具合が発生するのが確認いただけるかと思います。(ファイル名等は適宜変えるとして)
なお、"いったん作成"の時点でImportするなどすると、セル選択の不具合は解消されますが、今度はマクロが動作しなくなります。
(橋脚) 2021/11/25(木) 11:55


 こんにちわ ^^
実験マンそのいち。。。いま、やってみましたが。
マクロ本体のブック、新規作成の、debug.xlsm"
とも
再現致しませんでした。正常でしたです。
< 使用 Excel:2016 Office365タイプ、使用 OS:Windows10 >
でした。
(隠居Z) 2021/11/25(木) 12:21

 vbaで幾つかオープン時、自動実行のプロシジャーがありますが
そちら等で、何か記述しているとかは、考えられませんでせうか。
 ・Change 
 ・Activate
も気になるところですね。m(_ _)m 
(隠居Z) 2021/11/25(木) 12:27

うおお、VBAのウィンドウを閉じて、新規作成したブックだけを開くようにしたら正常になりました。

これで解決できそうです。ありがとうございます!
また何かありましたら宜しくお願いします!
(橋脚) 2021/11/25(木) 12:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.