エクセル:信じられないほどの縮小と拡大のコントロール
-
21-09-2019 - |
質問
時折、時間の経過とともに大きくなったり小さくなったりするマジック ボタンやリストボックスに問題があるスプレッドシートに遭遇することがあります。
コードにはこれを指示するものは何もありません。
他にこの喜びを経験した人はいますか?
解決
この問題は、Windows がモニター上で非ネイティブ解像度を処理する方法に関連しているようで、いくつかの方法で回避できます。
問題が発生すると完全な悪夢になる可能性がありますが、それは断続的にのみ発生します。
私たちは最近、数十人が使用する Excel ワークシートをテストし、原因と考えられるいくつかの修正方法についての良いアイデアを開発しました。
原因は、画面がネイティブ解像度以外で使用されるセットアップに関連しているようです。これは、ユーザーがラップトップに外部モニターを接続し、その結果得られる画面構成を慎重に選択しなかった場合に簡単に発生する可能性があります。たとえば、ラップトップがプロジェクター (おそらくネイティブ 1024 x 768 ディスプレイを備えた古いもの) に接続されているが、そのラップトップが 1280 x 800 であり、ユーザーが 重複 ではなくディスプレイ 延長する これ (Windows 7 の「プロジェクターへの接続」または「ディスプレイ」コントロール パネルの設定) を変更すると、結果は予測不可能で、通常は非ネイティブ解像度の両方の画面で満足のいく画像が表示されません。これらの設定が ほとんどいつも Excel ボタン、特に ActiveX コントロールに重大な問題を引き起こす可能性があります。場合によっては、クリックを繰り返すと縮小して読めなくなることがあります。画面全体をカバーするように拡大される場合もあります。
ほとんどの場合、ユーザーに 伸ばす ディスプレイ設定を変更したところ、結果は両方ともネイティブ解像度を使用した 2 つの画面になりましたが、問題は発生しませんでした。
問題を最小限に抑えるコードベースの方法もあります。ボタンとコントロールがクリックされたときに、ボタンとコントロールの位置とサイズをリセットしてみました (ボタンが多い場合は、面倒なコードが大量に追加されます)。これは時々うまくいきました。また、autosize プロパティを true から false に切り替えたり、またその逆に切り替えてみたりしました (これは開発者モードで手動で機能します)。これにより、より多くのインスタンスが修正されましたが、明らかにすべてではありませんでした。
他のヒント
は、リモートデスクトップ経由でアクセスマシン上spreasheetを開く人であることを原因を発見し、ローカルおよびリモートのマシン間の画面解像度の違いがそこにいます。私の不十分な答えはそれを使用することですので、これは、コントロールツールボックスから使用可能なコントロールに影響を与えますが、まだ古い学校のフォームのボタンコントロールを使用して問題が発生します。
これは何年も断続的に私を悩ませてきました。修正は数多くありますが、当たり外れがあるようです。Excel 2010 でも引き続き発生しており (2014 年 5 月に私に発生しました)、一部の報告によると Excel 2013 でも引き続き発生しています。少なくとも私の状況に一致する、私が見つけた最良の説明 (Excel 2010、RDP は関係せず、印刷プレビューは関係なし) は次のとおりです。
(Excel 2013をお使いの方には参考にならないかもしれません、ごめんなさい)
編集:技術ネットのリンクが切れた場合に備えて詳細を追加すると、技術ネットの記事には次のように書かれています。
まず、Excel 2010 用の Microsoft Hotfix 2598144 をインストールします。, 、 利用可能: ここ.
次に、症状が次のような場合は、 「Excel 2010 ワークシートで ActiveX ボタンをクリックすると、間違ったサイズに変更される」場合は、次のようにする必要があります。
- [スタート]、[ファイル名を指定して実行] の順にクリックし、[名前] ボックスに「regedit」と入力して、[OK] をクリックします。
- 次のレジストリ サブキー HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options を見つけて選択します。
- [編集] メニューの [新規作成] をポイントし、[DWORD (32 ビット) 値] をクリックします。
- 「LegacyAnchorResize」と入力し、Enter キーを押します。
- [詳細] ウィンドウで、[LegacyAnchorResize] を右クリックし、[変更] をクリックします。
- [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。
- レジストリ エディタを終了します。
または第二に、あなたの症状が次のような場合は、 「Excel 2010 でブックの印刷プレビューを表示すると、ブックにボタン フォーム コントロールが正しく表示されない」場合は、次のことを行う必要があります。
- [スタート]、[ファイル名を指定して実行] の順にクリックし、[名前] ボックスに「regedit」と入力して、[OK] をクリックします。
- 次のレジストリ サブキーを見つけて選択します。HKEY_CURRENT_USER\ソフトウェア\Microsoft\Office\14.0\Excel\オプション
- [編集] メニューの [新規作成] をポイントし、[DWORD (32 ビット) 値] をクリックします。
- 「MultiSheetPrint」と入力し、Enter キーを押します。
- [詳細] ウィンドウで [MultiSheetPrint] を右クリックし、[変更] をクリックします。
- [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。
- 次のレジストリ サブキーを再度選択します。HKEY_CURRENT_USER\ソフトウェア\Microsoft\Office\14.0\Excel\オプション
- [編集] メニューの [新規作成] をポイントし、[DWORD (32 ビット) 値] をクリックします。
- 「LegacyAnchorResize」と入力し、Enter キーを押します。
- [詳細] ウィンドウで、[LegacyAnchorResize] を右クリックし、[変更] をクリックします。
- [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。
- レジストリ エディタを終了します。
または第二に、あなたの症状が次のような場合は、 「ワークシートの印刷プレビューを表示すると、Excel 2010 ワークシートの ActiveX ボタンが間違ったサイズに変更される」場合は、次のようにする必要があります。
- [スタート]、[ファイル名を指定して実行] の順にクリックし、[名前] ボックスに「regedit」と入力して、[OK] をクリックします。
- 次のレジストリ サブキーを見つけて選択します。HKEY_CURRENT_USER\ソフトウェア\Microsoft\Office\14.0\Excel\オプション
- [編集] メニューの [新規作成] をポイントし、[DWORD (32 ビット) 値] をクリックします。
- 「LegacyAnchorResize」と入力し、Enter キーを押します。
- [詳細] ウィンドウで、[LegacyAnchorResize] を右クリックし、[変更] をクリックします。
- [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。
- レジストリ エディタを終了します。
幸運を。この問題はとても痛いです...
この問題は、画面の解像度に実際にあります。 Excelアプリケーションを使用しながら、最も一般的には、プロジェクタにするとき、ユーザーが接続すると発生する、またはWebExのます。
この問題に対する簡単な解決策は、すべての周辺の接続(プロジェクター)せずに自分のマシンを再起動し、再度Excelアプリケーションを開くようにユーザーに依頼することです。
前述の修正、クリック イベント後にプログラムで Active X コントロールのサイズ変更/位置変更、またはレジストリの変更 (D word LegacyAnchorResize を使用) を行っても、Excel 2010/Windows 7 64 ビットでは問題は解決しませんでした。
私にとっての解決策はここにありました:https://support.microsoft.com/en-us/kb/838006
Excel 2010 の場合、リンクは次のことを指示します。
- 実行中のすべてのプログラムを終了します。
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、[名前] ボックスに「regedit」と入力して、[OK] をクリックします。
- 次のレジストリ キーを見つけてクリックします。
- HKEY_CURRENT_USER\ソフトウェア\microsoft\office\14.0\common
- [編集] メニューの [新規] をポイントし、[キー] をクリックします。
- 「描画」と入力し、Enter キーを押します。
- [編集] メニューの [新規作成] をポイントし、[DWORD 値] をクリックします。
- 「UpdateDeviceInfoForEmf」と入力し、Enter キーを押します。
- [UpdateDeviceInfoForEmf] を右クリックし、[変更] をクリックします。10.「値のデータ」ボックスに「1」と入力し、「OK」をクリックします。
- [ファイル] メニューの [終了] をクリックしてレジストリ エディタを閉じます。
それはボタンではなく、自由に浮動のセルのコーナー、に固執するように定義されていることだろうか?
タグでそれを確認してください
|形式プロパティ|オブジェクトの配置
と「細胞と移動とサイズ」何もなく、を選択します。
私のモニターは、すべての謎を深めており、ネイティブの解像度に設定されているように見えます。しかし、私は(移動やリサイズ)ボタンに何かをすることは何とか問題を修正することを見出しました。このルーチンは、移動を自動化し、元の設定を復元します。
次のコードは、少なくともボタンの、問題に対処するようです。
Public Sub StablizeButton(oButton As MSForms.CommandButton)
With oButton
' If True, then temporary distortion is remedied only by clicking somewhere.
' If False, then the temporary distortion is remedied merely by moving the mouse pointer away.
.TakeFocusOnClick = False
' For best results: In the Properties Sheet, initialize to False.
.Left = .Left + 200 ' Move the button 200 units to the right, ...
.Left = .Left - 200 ' ... and then move it back.
End With
End Sub
を呼び出し、それは次の通り:
Private Sub MyButton_Click()
StablizeButton MyButton
' Remainder of code.
End Sub
この問題が何度か発生し、解決するために次のことを行いました。
- C:\ ドライブで拡張子「.exd」を持つファイルを検索します。
- それらのファイルを削除します(削除しても問題ありません)
- シートを開くたびに ActiveX オブジェクトのサイズを変更するコードを実装します。
この問題は、ラップトップをプロジェクターに接続し、ファイルを保存したすべてが原因であることがわかりました。その後、問題が発生するたびに、ステップ 1 を繰り返しました。と2。ActiveX オブジェクトが再び動作していました
私達はちょうどすべてのマクロに、次のモジュールを追加することにより、企業レベルでこれを解決したワークブックを有効にします:
Option Explicit
Type ButtonSizeType
topPosition As Single
leftPosition As Single
height As Single
width As Single
End Type
Public myButton As ButtonSizeType
Sub GetButtonSize(cb As MSForms.CommandButton)
' Save original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
myButton.topPosition = cb.top
myButton.leftPosition = cb.Left
myButton.height = cb.height
myButton.width = cb.width
End Sub
Sub SetButtonSize(cb As MSForms.CommandButton)
' Restore original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
cb.top = myButton.topPosition
cb.Left = myButton.leftPosition
cb.height = myButton.height
cb.width = myButton.width
End Sub
ただ、このようなあなたのコードの最初と最後にそれらを呼び出すます:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
' Turn off ScreenUpdating to make sure the user dosn't see the buttons flicker
GetButtonSize CommandButton1 ' Saves original button size
' Do cool things
'
'
'
SetButtonSize CommandButton1 ' Restores original button size
Application.ScreenUpdating = True
' Turn ScreenUpdating back on when you're done
End Sub
古いスレッドが、私はこの問題を持つと最初だけで、問題を持つ(リセット)などのAuto_Openで、このグループの大きさに設定されたこと一緒に、私の場合は、オプションボタンをグループ化することによってそれを解決しました。をP>
With ThisWorkbook
.Worksheets("1").Shapes("grpInput").Width = 383.1
.Worksheets("2").Shapes("grpSuite").Width = 383.1
.Worksheets("3").Shapes("grpLoc").Width = 383.1
.Worksheets("4").Shapes("grpDecision").Width = 383.1
End With
[EXCEL プロフェッショナル プラス 2016、32 ビット、バージョン 1802、ビルド 9029.2167]
私も同じ問題を抱えていましたが、 問題を解決できました Windows 10、64 ビットでディスプレイ スケーリングをカスタマイズすることによって。これは非常にシンプルで、単一のユーザーでも機能します。以下の手順に従うだけで、すべてのフォーム コントロール、シート形状、図、ActiveX コントロールが元のサイズに戻ります。コーディングしたり、高度なトリック/ウィザードリー/ハックを実行したりする必要はありません。提供されたリンクが壊れている場合は、これらの手順を繰り返してください。
Windows 10 でディスプレイのカスタム スケーリングを設定するには、次の手順を実行する必要があります。
「設定」を開きます。
- [設定] - [ディスプレイ] に移動します。
- 左側の「スケールとレイアウト」の下にある「カスタムスケーリング」リンクをクリックします。
- [カスタム レイアウト] ページが開きます。スケーリングパーセントの新しい値を指定します。【USE100】!!...そして出来上がり。Excel を閉じて再度開きます。
これは古い投稿ですが、この煩わしくストレスのかかる Excel の問題に対処している人にとって役立つことを願っています。
https://winaero.com/blog/set-display-custom-scaling-windows-10/
この問題は、私の経験は性質が通常のActiveXオブジェクト上で正しく設定されていることで、非常にイライラさせられます。私はちょうど任意のアクティブシート上で実行することができるように上からUDFを変更した、これは戻って、それが縮小する前にいた道を、すべてを設定します。
Public Sub ResizeAllOfIt()
Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
Dim originalHeight
Dim originalWidth
originalWidth = myCtrl.width
originalHeight = myCtrl.height
myCtrl.height = originalHeight - 1
myCtrl.height = originalHeight
myCtrl.width = originalWidth
Next myCtrl
End Sub
私は Excel 2010 でこの問題に常に遭遇し (いつもこのスレッドに戻ってきます)、100% 解決策を見つけたわけではありませんが、他の人を助けることができる情報がいくつかあると信じています。
ボタンを退屈にいじっているうちに、各オブジェクトの異なるイベントが異なる問題を引き起こしていることに気づきました。例えば、
- ボタン A - MouseDown イベントでボタンのサイズが縮小します。
- ボタン B - MouseMove イベントでテキストが拡大します (ただし、ボタンがクリックされた後のみです。別名、ボタンをクリックするとコードが実行され、ボタンの上にマウスを置いたままにし、マウスを動かすとすぐにテキストが拡大します)
- テキスト入力ボックス A - MouseUp イベントでテキストが拡大されます。
- テキスト入力ボックス B - LostFocus イベントでテキストが拡大されます
私にとって有効な唯一の解決策は、ランダムなサイズ変更を引き起こしていた各オブジェクトイベントのサイズ/テキストをリセットするコードを記述することです。そのようです ...
ここで、MaterialNum は入力ボックスの名前、MouseDown はイベントです。
Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Reset the size, font style, and size
With Worksheets("QuoteForm").Shapes("MaterialNum")
.Height = 21
.Width = 101.25
.Left = 972.75
.Top = 87
With .DrawingObject.Object.Font
.Name = "Arial"
.Size = 12
End With
End With
End Sub
さらに、フォーマット コントロールでいくつかのオプションを変更する必要がありました (オブジェクトを右クリックして、[フォーマット コントロール] をクリックします)。
- サイズタブ:アスペクト比をロックするボックスがオンになっている
- 「プロパティ」タブ:「オブジェクトを印刷」ボックスがオフになっている
また、[オブジェクト プロパティ] ペイン (オブジェクトを右クリック > [プロパティ]) で、TakeFocusOnClick を false に設定します。
はい、これはオブジェクトごとに行う必要があるため、時間がかかり退屈ですが、私にとってはこれが唯一の解決策です (そして、Microsoft がこの問題を修正するのを待つよりも早く修正できるようです!!!). 。それが他の人にも役立つことを願っています。
他の人もこれが役立つことを願っています
私は、特定の行と列にコントロールを固定これらの答えのいずれもが気づいていません。行/列は、モニターの解像度よりもより予測する傾向があるので、これは私のためにかなりきれいに取り組んできました。
オブジェクトが行くべきサンプル以下の基本的「対策」は、その後、Worksheet_Activate
コードであり、それを設定します。以下の例では、ボタンは常にD8:F10
をカバーにスナップします。
Private Sub Worksheet_Activate()
'Note this is done in the sheet code, not a Module.
With Me.Shapes("CommandButton1")
.Left = Me.Range("A1:C1").Width
.Top = Me.Range("a1:a7").Height
.Width = Me.Range("D1:F1").Width
.Height = Me.Range("A8:a10").Height
End With
End Sub
以下のような結果が表示されます。
これは非常に奇妙です。 (コードまたはプロパティシートを使用してのいずれか)に照会するときの幅&高さプロパティが収縮しないが、どうやら彼らは、変更を行います。
私はプロパティシートを使用し、BACK 15に、その後14、たとえば、標準の15から幅を変更した場合、それはそれを修正することに気づいています。
私のために作品を以下のコード(とは、シートに面白い視覚効果を持っている:あなたは、クリック、それは縮小、画面が点滅し、それが戻って拡大)。
(チェックボックスのクリックイベントの)コードで私の解決策ます:
Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
myLab = myCtrl.Name
myCtrl.Height = 14 ' to "wake up" the property.
myCtrl.Height = 15 ' to reset it back to normal
myCtrl.Width = 12 ' just making sure
Next myCtrl
は、ネットを検索した後、それが最善の解決策ではなく.xlsm
より.xlsbとしてファイル(バイナリ)に保存された縫い目私はしばらく前に始めたことは、すべて私のコントロールのサイズを設定し、単一のサブを持っていることでした。私はその後、コントロールは拡大または縮小コード内の任意の点からこのサブを実行することができます。それは時々余分な気難しい作業の多くのですが、それは私のスプレッドシートを食べてから、私のボタンを保持します。
私はこれをテストしていないが、私は、これはズームプロパティ(多分activewindow.Zoom = false
を追加)に関係していると思います。
また形状WICH定義.Placement = xlMove
のWorkbook_Openとwindow_activateに、この細胞をサイズ変更の形状を防止することである(しかし、それらに移動します)。
私は
小さなアイデアを支援しようと、...また、私はリモートで使用することはありません、エクセル2013を使用して、この問題を持っていなかったのですは、私が修正を発見したことがあります。「の必ずワークシート上のすべての形状がユニークな名前を持たせる」(含むチェックボックス/ラジオボタン(OLEコントロール)だけでなく、写真やその他の形状の種類を... )
問題が断続的ですので、私はこれを保証することはできません。私は今、この修正プログラムを使用して正常に動作して2つの形式がありますが、「2」は、非常に小さなサンプルセットであり、単なる偶然である可能性があります。決して少なく、これらは私が撮った手順は次のとおりです。
私は白紙(シート1)に問題シート(wsForm)内のすべての図形を記載されています
Sub ListShapes()
Dim spShape As Shape
Dim intRow As Integer
Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell")
intRow = 2
For Each spShape In wsForm.Shapes
Sheet1.Cells(intRow, 1).Value = spShape.Name
Sheet1.Cells(intRow, 2).Value = spShape.Left
Sheet1.Cells(intRow, 3).Value = spShape.Top
Sheet1.Cells(intRow, 4).Value = spShape.Width
Sheet1.Cells(intRow, 5).Value = spShape.Height
Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address
intRow = intRow + 1
Next
End Sub
私は、列Gの数式を使用して、列Aの各形状の名前をカウント
の = COUNTIF($ A $ 2:$ A $ 120 A2)の
もちろんスーツに範囲を調整...あなたは、この欄に「1」を持たないあらゆる形状のフィルター、その後することができます。名前の変更をし、Excelの左最上部にある名前/リファレンスボックスに新しい一意の値を入力、図形を選択して、「右下のセルは、」ワークシート上の図形を見つけることができます。
この形状リストも長く忘れられて、未使用だったいくつかの「死んだ」形状(0高さや幅0)を見つける助けました。
私はあなたのためにこの作品を願っています!そのことについては...私はそれが将来のために私の作品を期待出現...
は、あなたが、あなたのコードに、元の配置を置くだけで、それらに対してチェックすることができます。ボタンがクリックされたときに画面の更新をオフにし、配置がコントロール上で異なるかどうかを確認し、戻ってそれを変更し、必要に応じて、
上の画面更新背を向けますDP
この記事や関連記事で多くの解決策を試した結果、Microsoft が投稿した別の問題に対する解決策も、少なくとも私が取り組んでいるコンテキスト内では、特定の方法で適用すると、この特定の問題に対して確実に機能することがわかりました。私は、ここにあるラップトップのネイティブ解像度でこれらの問題を経験し、非ネイティブ解像度に切り替えるたびに PC でこれらの問題を経験しました。つまり、ボタンは通常よりも大きなサイズで読み込まれ、クリックすると大きくなり、これらのボタン内のテキストと画像は縮小します(そして、少なくともテキストの設定は同じままであったため、プログラムで元に戻す方法がわかりませんでした)私の場合、これらは断続的な問題ではありませんでした。Microsoft が解決策を公開している印刷プレビューを使用した後、断続的な問題が発生しました。 ここ. 。これを試してみましたが、うまく機能しているようです。
ソリューション:Excel の場合は、アプリを閉じて、MSForms.exd ファイルを削除します。 C:\Users{UserName}\AppData\Local\Temp\Excel8.0
ボタンを表示したい解像度で実行します。他の Office アプリについては、ローカルの AppData emp フォルダーで他の .exd ファイルを検索することもできます。
前述したように、これは、12 月の更新プログラムがインストールされた後にボタンが機能しなくなるという別の問題に対して Microsoft が提案した解決策です。 ここにその記事へのリンクがあります。 その場合、修正は 1 回だけです。ここでは、解像度を変更するたびにこれを行う必要がある場合があります。
コントロールをグループ化すると私のための仕事に表示されます。私はupvoteやコメントが、SOは私をさせませんでしょう。 (注)この問題は、多くの場合、あなたはW8表示スケーリングを使用し、高解像度のノートPCや古いモニターを持っている場合、最大来るます。
私は、すべてのオブジェクト(ボタン、テキストボックスなど)を越えて、この問題を発見しました。私は/印刷プレビュー複数のシートを印刷するとき、シーケンスの最初を除くすべてのシートを移動したり、オブジェクトのサイズを変更しています。多くのテストの後、ページの中の最も簡単な解決策は、ズームアップまたはダウンして元の設定に戻ります。
ActiveX リストボックスでも問題があり、他の場所で次のことを見つけました。これは今のところ機能しているようです。また、スプレッドシートを他の人に渡すときに転送する最も簡単な解決策のようです。
「ListBox には IntegralHeight プロパティがあり、FALSE 設定の副作用でコントロールが斜めになるのを防ぎます。また、コマンド ボタンにはセルの移動やサイズ変更などのプロパティがありますが、他のコントロールはそれほど優雅ではありません。」
さらに彼らは次のようなアドバイスをしています。http://www.experts-exchange.com/articles/5315/Dealing-with-unintended-Excel-Active-X-resizing-quirks-VBA-code-simulates-self-correction.html
私は、あなたは彼らがビューの外にスクロールしません場所にコマンドボタンなどが配置されますよう、通常、ほとんどのアプリケーションでオンになりますこれ、問題がフリーズペインをオンにしたときに起こるようですがわかります。
はBEのために働いた溶液を基に制御するだけでなく、グループを凍結ペイン領域を越えて延びていることを確実にします。私はあなたがそれを見ていないので、グループにそれを追加するだけでなく、コントロールを非表示にし、凍結ペインエリア外のコントロールを追加することによってこれを行います。
今エクセル2013を使用して、これはExcelが実行されている(と毎回私は拡張子を削除)しながら、私は私のディスプレイを拡張EVERY時間が起こります。
私が実装し始めてきた修正がます。
上の他のすべてのActiveXコントロールをユーザーフォームを開くために、ハイパーリンクの代わりに、ボタンと1を使用しています.regファイルに次のコードを追加します。ダブルクリックして、確認します。 Excelを再起動。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options]
"LegacyAnchorResize"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Draw]
"UpdateDeviceInfoForEmf"=dword:00000001
右下のスライダーを使用して100%にズーム設定を変更してみてください。異なるサイズの両方のモニターに私のためにそれを修正しました。
有効な修正を見つけ、単一のユーザーの問題を解決しました。私のちょっとした暴言を読みたくない場合は、解決策まで直接スキップしてください。
暴言:
私は恐竜の時代からこの愚かな問題に悩まされてきました。その間、Microsoft には Office スイートに無数のメジャー アップデートをリリースするためのリソースが豊富にありましたが、この問題は解決されていません。それは本当に腹立たしいです。このような基本的な機能が機能しない場合、アップグレードする理由はまったくありません。MS の誰かが、高解像度ディスプレイ上で Excel の ActiveX コントロールを使用しているはずですよね?
私のデスクトップ PC ではこの問題は発生しませんでしたが、理由はわかりませんでしたが、Surface Pro 4 では、ActiveX コントロールをクリックするたびにバナナのような状態になります。
今日、私はこの問題の真相に迫ることにしました。私は徹底的に検索し、さまざまなフォーラムで提案されているすべての解決策を試しました(ちなみにどれも機能しませんでした)。コントロールがグループ化されているかどうか、ロックされているかどうか、ホットフィックスがインストールされているかどうかは関係ありません。
昨日、Traktor (DJ ソフトウェア) と呼ばれる別のアプリで誤動作するという別の問題が発生しました。表示スケーリングが 100% の倍数ではない値に設定されていると、コントロールが飛び回ってしまいました。ユーザーは、このアプリケーションの互換性モードを編集することが解決策であることを発見しました。そこで Excel でも同じことを行ったところ、うまくいきました。これで、ディスプレイの解像度やスケーリングに関係なく、コントロールは固定されたままになります。
解決:
(Excel が実行されていないことを確認してください)
- EXCEL.EXE を見つけます (私のシステムでは、これは C:\Program Files\Microsoft Office\Office16\EXCEL.EXE にあります)
- 「EXCEL.EXE」の名前を「_EXCEL.EXE」に変更します(基本的には別の名前に変更します)
- 名前を変更した EXCEL.EXE ファイルを右クリックし、[プロパティ] > [互換性] タブ > [設定] セクションに移動します。
- 上書き高DPIスケーリング動作=有効になり、=アプリケーションで実行されるスケーリングを設定します
- 「OK」をクリックします
- 「_EXCEL.EXE」の名前を「EXCEL.EXE」に戻します
これで、Excel はネイティブ解像度で実行され、ActiveX コントロールが動作しなくなることはありません。唯一の欠点は、Excel が画面の拡大縮小に応答しないため、期待よりも少し小さく見える可能性があることです。私のSurface Pro 4では許容範囲以上です
ノート:
1) Excel 2016 では、EXCEL.EXE の [プロパティ] ダイアログに [互換性] タブがないため、手順 2 と 6 が必要です。名前を変更すると、タブが使用可能になります。
2) このソリューションは 1 ユーザー ベースでのみ機能します。つまり、ActiveX コントロールを含む Excel ファイルを同僚に送信した場合、互換モードの設定を変更しない限り、ActiveX コントロールは同僚のシステム上で正しく表示されません。
3) このハックを適用すると、以前に破損した Excel ファイルを開くと自動的に修復され、すべてのコントロールが元の意図したサイズに回復したように見えます。
テストしてコメントしてください。これが誰かの助けになれば幸いです、乾杯!
私は時々同じ問題を持っています。私の場合、私は1つのファイルにそれを100%に複製することができますが、それは事実上同一のファイルに矛盾していました。私は、ボタンの外観を復元するために、ファイルを保存し、再度開くことができ - 私はまた、サイズの誤差は永続的ではありませんでした。私はまた、新しいウィンドウを作成し、破損した窓を捨てることができます。私は、単一のモニター構成を使用しています。
私はシートのの HPageBreaks のコレクションにアクセスしたときに私にとっては、ボタンのサイズを変更しました。私は次のように一時的にウィンドウの表示を変更することで問題を回避することができました。
ActiveWindow.View = xlPageBreakPreview
' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView