Domanda

Occasionalmente, ti capita un foglio di calcolo che soffre di magia pulsanti o caselle di controllo che diventano più grandi o più piccoli nel corso del tempo.

Nulla nel codice sta istruendo questo.

Qualcuno ha altro provato questa gioia?

È stato utile?

Soluzione

Il problema sembra riguardare il modo in cui Windows gestisce risoluzioni non native su monitor e può essere evitato in diversi modi

Il problema può essere un incubo quando succede, ma succede solo a intermittenza.

Abbiamo testato di recente un foglio di lavoro Excel usato da poche decine di persone e abbiamo sviluppato una buona idea della causa e alcune possibili correzioni.

La causa sembra riferirsi a qualsiasi configurazione in cui gli schermi sono utilizzati in qualcosa di diverso da loro risoluzione nativa. Ciò può accadere facilmente se un utente si collega un monitor esterno in un computer portatile e non sceglie con cura la configurazione della schermata risultante. Ad esempio, se un computer portatile è collegato a un proiettore (forse un vecchio con un nativo 1024 per 768), ma il portatile è un 1280 800 e l'utente sceglie di duplicato il display piuttosto che < strong> estendentesi esso (impostazioni in "connessione a un proiettore" o pannello "display" controllo in Windows 7), il risultato è un'immagine imprevedibile e di solito insoddisfacente su entrambi gli schermi sia con a risoluzioni non native. Abbiamo scoperto che queste impostazioni quasi sempre causare seri problemi con pulsanti di Excel, in particolare i controlli ActiveX. A volte, sui clic ripetuti, si restringono a illeggibilità; altre volte si espandono per coprire l'intero schermo.

Per lo più, quando ci richiedere agli utenti di utilizzare il estendere impostazioni di visualizzazione e il risultato è due schermi sia utilizzando risoluzioni native, non vediamo il problema.

Ci sono anche modi basati su codice per ridurre al minimo il problema. Abbiamo provato a ripristinare la posizione e le dimensioni dei pulsanti e controlli quando sono stati cliccato (che aggiunge un sacco di codice noioso se si dispone di un sacco di pulsanti). Questo a volte ha funzionato. Abbiamo anche provato commutando la proprietà AutoSize da true a false e ritorno (questo funziona manualmente in modalità sviluppatore) e questo risolve più volte, ma non a quanto pare tutti.

Altri suggerimenti

trovato la causa di essere persone apertura lo spreasheet su una macchina accessibile tramite desktop remoto, e che vi sia una differenza di risoluzione dello schermo tra computer locali e remoti. Questo riguarda i comandi disponibili dalla casella degli strumenti di controllo, ma ancora sperimentare il problema utilizzando un vecchio controllo pulsante forme di scuola, quindi la mia risposta soddisfacente è quello di utilizzare questo.

Questo è stato mi affliggono da anni, dentro e fuori. Ci sono una serie di correzioni in giro, ma sembrano incostante. E 'stato ancora in corso in Excel 2010 (succedendo a me maggio 2014), ed è ancora che si verificano in Excel 2013 da alcuni rapporti. La descrizione migliore che ho trovato quello che soddisfa la mia situazione almeno (Excel 2010, senza RDP coinvolti, senza Anteprima di stampa coinvolti) è qui:

team di supporto di Microsoft Excel Blog: controlli ActiveX e la forma si ridimensiona quando si fa clic o fare l'anteprima di stampa (in Excel 2010)

(Questo potrebbe non aiutare per gli utenti di Excel 2013 sorry)

EDIT: Aggiunta di dettaglio nel caso di collegamento TechNet mai si esaurisce, l'articolo di TechNet dice:

IN PRIMO LUOGO installare Microsoft Hotfix 2598144 per Excel 2010 , a disposizione: qui .

secondo luogo, se il sintomo è "Un pulsante ActiveX modifiche alla dimensione errata dopo si fa clic in un foglio di lavoro Excel 2010", allora si dovrebbe:

  • Fare clic sul pulsante Start, scegliere Esegui, digitare regedit nella casella Apri, quindi scegliere OK.
  • Individuare e selezionare la seguente sottochiave HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • dal menu Modifica, scegliere Nuovo e quindi Valore DWORD (32-bit).
  • Digitare LegacyAnchorResize, quindi premere Invio.
  • Nel riquadro dei dettagli, fare clic destro LegacyAnchorResize, e quindi fare clic su Modifica.
  • Nella casella Dati valore, digitare 1 e quindi fare clic su OK.
  • Uscire dall'editor del Registro di sistema.

O secondo luogo, se il sintomo è "Un controllo di modulo pulsante viene visualizzato correttamente in una cartella di lavoro dopo si visualizza l'anteprima di stampa della cartella di lavoro in Excel 2010", allora si dovrebbe:

  • Fare clic su Start, scegliere Esegui, digitare regedit nella casella Apri, quindi scegliere OK.
  • Individuare e selezionare la seguente sottochiave: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • dal menu Modifica, scegliere Nuovo e quindi Valore DWORD (32-bit).
  • Digitare MultiSheetPrint, quindi premere Invio.
  • Nel riquadro dei dettagli, fare clic destro MultiSheetPrint, e quindi fare clic su Modifica.
  • Nella casella Dati valore, digitare 1 e quindi fare clic su OK.
  • Selezionare la seguente sottochiave di nuovo: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • dal menu Modifica, scegliere Nuovo e quindi Valore DWORD (32-bit).
  • Digitare LegacyAnchorResize, quindi premere Invio.
  • Nel riquadro dei dettagli, fare clic destro LegacyAnchorResize, e quindi fare clic su Modifica.
  • Nella casella Dati valore, digitare 1 e quindi fare clic su OK.
  • Uscire dall'editor del Registro di sistema.

O secondo luogo, se il sintomo è "Un pulsante ActiveX viene modificato in una dimensione errata in un 2010 foglio di lavoro di Excel dopo si visualizza l'anteprima di stampa del foglio di lavoro", allora si dovrebbe:

  • Fare clic su Start, scegliere Esegui, digitare regedit nella casella Apri, quindi scegliere OK.
  • Individuare e selezionare la seguente sottochiave: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • dal menu Modifica, scegliere Nuovo e quindi Valore DWORD (32-bit).
  • Digitare LegacyAnchorResize, quindi premere Invio.
  • Nel riquadro dei dettagli, fare clic destro LegacyAnchorResize, e quindi fare clic su Modifica.
  • Nella casella Dati valore, digitare 1 e quindi fare clic su OK.
  • Uscire dall'editor del Registro di sistema.

In bocca al lupo. Questo problema è un dolore ...

Il problema è infatti dovuto alla risoluzione dello schermo. Più comunemente si verifica quando l'utente si connette a un proiettore, o WebEx mentre si utilizza l'applicazione di excel.

Una semplice soluzione a questo problema è quello di chiedere all'utente di riavviare la macchina, senza alcuna connessione periferici (proiettori) e quindi aprire nuovamente l'applicazione di excel.

Le correzioni discusso in precedenza, programmaticamente il ridimensionamento / riposizionamento dei controlli Active X dopo eventi click, o modificare il Registro di sistema (con la parola D LegacyAnchorResize), non ha risolto il problema per me con Excel 2010 / Windows 7 a 64 bit.

La soluzione per me è stata trovata qui: https://support.microsoft.com/ it-it / kb / 838006

Per Excel 2010 istruisce il link a:

  1. Chiudere tutti i programmi in esecuzione.
  2. Fare clic su Start, scegliere Esegui, nella casella Apri, digitare regedit, quindi scegliere OK.
  3. Individuare e selezionare la seguente chiave di registro:
  4. HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ common
  5. dal menu Modifica, scegliere Nuovo, quindi Chiave.
  6. Tipo Draw, quindi premere Invio.
  7. dal menu Modifica, scegliere Nuovo, quindi Valore DWORD.
  8. Digitare UpdateDeviceInfoForEmf, quindi premere Invio
  9. Fare clic UpdateDeviceInfoForEmf, e quindi fare clic su Modifica. 10.In casella Dati valore digitare 1, e quindi fare clic su OK.
  10. dal menu File, scegliere Esci per chiudere l'editor del Registro.

E 'possibile che il pulsante è definito per aderire agli angoli di una cella, invece di galleggiare liberamente?

Controlla con

Formato | proprietà | Oggetto di posizionamento

e scegliere qualsiasi cosa, ma "spostare e ridimensionare con le celle"

Il mio monitor tutti sembrano essere fissato a risoluzione nativa, che approfondisce il mistero. Tuttavia, ho trovato che fare qualcosa per il pulsante (spostamento o ridimensionamento) risolve in qualche modo il problema. Questa routine automatizza lo spostamento, e quindi ripristina l'impostazione originale.

Il seguente codice sembra affrontare il problema, almeno per i pulsanti.

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

Invoke come segue:

Private Sub MyButton_Click()
    StablizeButton MyButton

    ' Remainder of code.
End Sub

Ho avuto questo problema un paio di volte e per risolvere l'ho fatto quanto segue:

  1. una ricerca tra la mia unità C: \ per qualsiasi file con estensione 'EXD'
  2. Elimina i file (non c'è problema a farlo)
  3. Implementare il codice che ri-formati ActiveX oggetti ogni volta che il foglio viene aperto

Ho trovato questo problema è stato causato tutto ciò che abbiamo collegato il portatile in un proiettore e salvato il file. Poi ogni volta che il problema è venuto fino Sono andato appena ripetuto passaggi 1. e 2. ei miei oggetti ActiveX si comportavano di nuovo

Abbiamo appena risolto questo a livello aziendale aggiungendo il modulo per tutte le cartelle di lavoro macro attivata:

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

Basta chiamare l'inizio e la fine del codice come questo:

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

Old filo ma ero a questo problema e risolto dal primo raggruppando la, nel mio caso, pulsanti di opzione insieme che stavano avendo il problema poi semplicemente impostando (reset) la dimensione di questo gruppo in un'Auto_Open quanto tale:

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 PROFESSIONAL PLUS 2016, 32bit, VERSIONE 1802, COSTRUIRE 9029,2167]

ho avuto lo stesso problema e ho potuto risolvere il problema personalizzando la scala di visualizzazione in finestre 10, 64 bit. E 'extremelly semplice e funziona per un singolo utente. Basta seguire le istruzioni qui sotto e avrete tutti i controlli dei moduli, forme, figure foglio e controlli ActiveX di nuovo al loro formato originale. Non c'è bisogno di codifica o fare avanzati inganno / magia / hack. Se il link fornito è rotto, basta ripetere la procedura.

  1. Per impostare la visualizzazione in scala personalizzate in Windows 10, è necessario eseguire le seguenti operazioni.

    Aprire Impostazioni.

  2. Vai a Impostazioni -. Mostra
  3. A sinistra, fare clic sul collegamento personalizzato Scaling sotto "Scala e Layout".
  4. La pagina Layout personalizzato sarà aperto. Specificare un nuovo valore per il ridimensionamento per cento. [USE 100] !! ... e voilà. Chiudere e riaprire Excel.

Si tratta di un vecchio post, ma spero che aiuta chi si occupa di questo fastidioso problema e sottolineando Excel.

https://winaero.com/blog/set- display-personalizzati-scaling-windows-10 /

Questo problema è molto frustrante, la mia esperienza è che le proprietà sono di solito impostate correttamente sugli oggetti ActiveX. Ho modificato un UDF dall'alto per essere solo in grado di funzionare su qualsiasi foglio attivo, questo imposterà tutto torna come era prima del restringimento.

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

Mi sono imbattuto in questo problema per tutto il tempo in Excel 2010 (Che sempre mi porta di nuovo a questo thread) e anche se non ho trovato un fix al 100%, credo di avere delle informazioni che possono aiutare gli altri.

Mentre faticosamente a giocare con i pulsanti ho scoperto che DIVERSI EVENTI, per ogni oggetto sono state causando diversi problemi.Per esempio,

  • Il tasto A - Le dimensioni del pulsante si ridurrebbero sull'evento MouseDown
  • Il pulsante B - Il testo allargare l'evento MouseMove (Ma solo dopo che il pulsante è stato premuto.AKA, faccio clic su un pulsante, il codice viene eseguito, lasciare il mouse in bilico sopra il pulsante, e poi non appena muovo il mouse il testo che vorresti ingrandire)
  • Casella di input di testo - Il testo ingrandisci l'evento MouseUp
  • Casella di input di testo B - I testi ingrandisci l'evento LostFocus

L'unica soluzione che funziona per me è scrivere il codice per reimpostare la dimensione/testo per ogni oggetto evento che è stato la causa del random ridimensionamento.In questo modo ...

Dove MaterialNum è il nome della casella di input, e MouseDown è l'evento ...

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

Inoltre, ho dovuto cambiare un paio di opzioni in Formato Controllo (a Destra fare clic su oggetto > Formato di Controllo):

  • Dimensioni scheda:Lock aspect ratio è selezionata la casella di
  • Scheda di proprietà:Oggetto stampa casella è deselezionata

Inoltre, nel riquadro delle Proprietà dell'Oggetto (a Destra fare clic su oggetto > Proprietà) ho impostato TakeFocusOnClick false

Sì, questo richiede tempo e noioso come deve essere fatto con ogni oggetto, ma è l'unico fix che funziona per me (E sembra di essere in un veloce fix di attesa per Microsoft per risolvere il problema!!!).Speriamo che aiuta gli altri.

Spero che gli altri a trovare questo utile

Ho notato che nessuna di queste risposte ancorare il controllo a una specifica riga e colonna. Questo ha funzionato abbastanza pulito per me come righe / colonne tendono ad essere più prevedibile rispetto alla risoluzione dei monitor.

L'esempio riportato di seguito in fondo "misure" in cui l'oggetto dovrebbe andare, quindi imposta lì nel codice Worksheet_Activate. Nell'esempio qui sotto, il pulsante sempre scatto alla copertura 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

Verrà visualizzato il risultato, come mostrato di seguito:

entrare descrizione dell'immagine qui

E 'molto strano. Le proprietà larghezza e altezza non si restringono quando interrogato (dal codice o utilizzando il foglio di proprietà), ma a quanto pare cambiano.

Ho notato che se uso il foglio di proprietà e modificare la larghezza dallo standard 15, per esempio, il 14 e poi di nuovo a 15, che lo fissa.

Il seguente codice funziona per me (e ha un effetto visivo divertente sul foglio: si sceglie, si restringe, lo schermo sfarfalla, e si espande di nuovo)

.

La mia soluzione nel codice (sull'evento clicca per la casella di controllo):

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

Dopo la ricerca in rete, cuciture la soluzione migliore è salvare il file come .xlsb (binario), piuttosto che .xlsm

Quello che ho iniziato a fare un po 'indietro era di avere un unico sub che imposta la dimensione di tutti i miei comandi. Posso quindi eseguire questo sub da qualsiasi punto nel codice in cui i controlli crescono o si riducono. A volte è un sacco di lavoro in più schizzinoso, ma mantiene i bottoni da mangiare il mio foglio di calcolo.

non ho la prova, ma credo che questo ha a che fare con la proprietà zoom (magari aggiungere activewindow.Zoom = false).

Inoltre può fare un anello su forme wich definisce .Placement = xlMove su Workbook_Open e window_activate, questo per evitare forme di ridimensionare con cellule (ma si muoverà con loro).

sto usando Excel 2013 e non ha mai avuto questo problema, anche io non uso mai in remoto ..., solo cercando di aiutare con piccole idee

Forse ho trovato una soluzione: " Assicurati che tutte le forme del foglio di lavoro hanno nomi unici " (tra cui caselle / pulsanti di opzione (controlli OLE), così come i tipi di immagini e altri di forma ... )

Perché il problema è intermittente, non posso garantire questo. Ho due forme ora lavorando bene con questa correzione, ma "due" è un piccolo set di prova, e potrebbe essere solo una coincidenza. Non di meno, questi sono passi che ho preso:

ho elencato tutte le forme nel foglio problema (wsForm) su un foglio bianco (Foglio1):

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

Ho poi contato ciascuna forma nella colonna A, utilizzando una formula in colonna G:

= COUNTIF ($ A $ 2: $ A $ 120, A2)

Ovviamente regolare gamma per soddisfare ... È quindi possibile filtrare tutte le forme che non hanno un "1" in questa colonna. La "cella in basso a destra" ti aiuta a trovare la forma nel foglio di lavoro: rinomina selezionando la forma, quindi inserendo il nuovo valore univoco nella casella Nome / di riferimento in alto a sinistra di Excel.

La lista di forma anche aiutato a trovare alcune forme "morti" (0 altitudini o 0 larghezza) che erano a lungo dimenticati e inutilizzato.

Spero che questo funziona per voi! Del resto ... spero che lavora per me per eventi futuri ...

Se si desidera non visualizzare il pulsante muoversi avanti e indietro, si può mettere il posizionamento originale nel codice poi basta controllare contro coloro. Disattivare l'aggiornamento dello schermo quando viene cliccato il pulsante, verificare se il collocamento è diversa sul controllo, cambiare di nuovo, se necessario, attivare l'aggiornamento dello schermo spalle

DP

Dopo aver provato molte delle soluzioni su questo e post correlati, ho scoperto che la soluzione di un problema diverso che Microsoft aveva postato anche lavorato in modo affidabile per questo particolare problema quando applicato in modo particolare, almeno nel contesto Sono lavoro all'interno. Ho sperimentato questi problemi in un nativo risoluzione ai computer portatili che abbiamo qui e su un PC ogni volta che mi piacerebbe passare a una risoluzione non nativa. Vale a dire, i pulsanti di caricare in un più grande di dimensioni normali, sempre più grandi quando si fa clic su, e il testo e le immagini in questi pulsanti contrazione (e almeno l'impostazione per il testo è rimasto lo stesso, quindi non ho potuto vedere alcun modo per cambiare di nuovo a livello di codice o in altro modo.) Questi non sono stati problemi intermittenti nel mio caso. Ho avuto problemi intermittenti se dopo l'utilizzo di anteprima di stampa che Microsoft ha pubblicato una soluzione per qui . Ho provato questo e sembra funzionare.

La soluzione: Per Excel, chiudere l'applicazione ed eliminare il file MSForms.exd da C:\Users{UserName}\AppData\Local\Temp\Excel8.0 mentre nella risoluzione che si desidera visualizzare i pulsanti Si potrebbe anche cercare altri file EXD nella cartella locale AppData \ Temp. per altre applicazioni di Office.

Come ho già detto, questa è una soluzione proposta da Microsoft per una questione diversa - in cui i pulsanti smettono di funzionare dopo l'aggiornamento del dicembre '14 sono installati. Ecco il link a questo articolo. In questo caso, si tratta di una correzione di una volta. Qui, potete avere bisogno di farlo ogni volta che si cambia risoluzioni.

Il raggruppamento dei controlli sembra funzionare per me. Vorrei upvote o commentare ma così non me lo permette. Si noti che questo problema si presenta spesso se si utilizza il ridimensionamento dello schermo W8 e hanno un computer portatile ad alta risoluzione e il monitor più vecchi.

Ho trovato questo problema in tutti gli oggetti (pulsanti, caselle di testo, ecc). Quando stampo / stampa anteprima più fogli, tutti i fogli, tranne per la prima nella sequenza si sono spostati o ridimensionati oggetti. Dopo molte prove, la soluzione più semplice per zoom della pagina verso l'alto o verso il basso e tornare all'impostazione originale.

ho avuto il problema anche con listboxes ActiveX e trovato il seguente altrove e sembra funzionare finora, e sembra anche il by soluzione di gran lunga più semplice che trasferire con sé quando consegna il foglio di calcolo per qualcun altro:

"Mentre il ListBox ha una proprietà IntegralHeight il cui effetto collaterale di un ambiente FALSE manterrà che il controllo di andare di traverso, e mentre i pulsanti di comando hanno proprietà come lo spostamento / dimensioni con cellule, ecc, altri controlli non sono aggraziata ".

E loro hanno un po 'di consigli: http://www.experts-exchange.com/articles/5315/Dealing-with-unintended-Excel-Active-X-resizing-quirks-VBA-code-simulates-self-correction.html

Trovo che il problema sembra accadere solo quando Blocca riquadri è acceso, che sarà normalmente in nella maggior parte delle applicazioni come potrete inserire il vostro pulsanti di comando, ecc in un luogo dove non scorrere fuori dalla vista.

La soluzione che ha funzionato per essere è di raggruppare i controlli, ma anche garantire che il gruppo si estende oltre l'area Blocca riquadri. Faccio questo con l'aggiunta di un controllo al di fuori dell'area Blocca riquadri, inserirlo nel gruppo, ma anche nascondere il controllo in modo che non lo vedi.

Ora utilizzando Excel 2013 e questo accade ogni volta rivolgo il mio display mentre Excel è in esecuzione (e ogni volta che rimuovere l'estensione).

La correzione che ho iniziato ad attuare sta usando collegamenti ipertestuali al posto dei bottoni ed una di apertura un form con tutti gli altri controlli ActiveX.

Aggiungi questo codice in un file reg. Fare doppio clic e e confermare. Riavviare 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

Provare a cambiare l'impostazione di zoom al 100% utilizzando il cursore in basso a destra. Corretto per me su entrambi i monitor di diverse dimensioni.

Ho trovato una soluzione che funziona, e risolve il problema per un singolo utente. Se non si desidera leggere il mio piccolo rant è possibile saltare direttamente alla soluzione.

RANT:

Ho sperimentato questo problema stupido dal momento che i dinosauri. Nel frattempo, Microsoft ha avuto un sacco di risorse per liberare innumerevoli aggiornamenti importanti per la suite Office e tuttavia questo problema va senza indirizzo. E 'assolutamente irritante. Non ho alcun motivo per l'aggiornamento quando cose di base come questo non funziona. Sicuramente qualcuno a MS utilizza controlli ActiveX in Excel direttamente su una ad alta risoluzione del display, no?

non ho esperienza di questo problema sul mio PC desktop, nessun indizio sul perché, ma sul mio Surface Pro 4 i miei controlli ActiveX go banane ogni volta che clicco loro.

Oggi ho deciso di andare a fondo di questa. Ho cercato di alta e bassa, provato una ogni soluzione proposta su vari forum (nessuno dei quali lavora tra l'altro). Non importa se i controlli sono raggruppati o no, bloccati o meno, hotfix installati oppure no.

Ieri ho avuto un altro problema con le cose comportamento anomalo in un altro app chiamato Traktor (software DJ), in cui i controlli sarebbero saltare quando il ridimensionamento dello schermo è stato impostato su un valore che non è un multiplo esatto di 100%. Un utente ha trovato la soluzione era quella di modificare la modalità di compatibilità per questa applicazione. Così ho fatto la stessa cosa per Excel, e ha funzionato! Ora i miei controlli stare fermo, a prescindere dalla risoluzione dello schermo e il ridimensionamento.

SOLUZIONE:

(Assicurarsi che Excel non è in esecuzione)

  1. Individuare EXCEL.EXE (sul mio sistema questo può essere trovato in C: \ Programmi \ Microsoft Office \ Office16 \ EXCEL.EXE)
  2. Rinomina "EXCEL.EXE" a "_EXCEL.EXE" (in pratica cambiarlo con qualcos'altro)
  3. Fare clic sul file EXCEL.EXE rinominato, poi vai a scheda Proprietà> Compatibilità> sezione Impostazioni
  4. Imposta Ignora alta comportamento DPI scala = Abilitato, e Scala eseguita da = Application
  5. Fare clic su OK
  6. Rinomina a "_EXCEL.EXE" torna a "EXCEL.EXE"

Ora Excel verrà eseguito con la risoluzione originale e controlli ActiveX non andrà storto. L'unico inconveniente è che Excel non risponderà a ridimensionamento dello schermo, quindi le cose possono sembrare un po 'più piccola di quanto si vorrebbe. Sul mio Surface Pro 4 è più che accettabile

Note:

1) i punti 2 e 6 sono tenuti con Excel 2016, perché la finestra di dialogo per EXCEL.EXE proprietà non offre la scheda Compatibilità. Dopo aver rinominato, la scheda diventa disponibile.

2) Questa soluzione funziona solo su una base uno-utente. Cioè, se si invia un file di Excel contenente controlli ActiveX per i tuoi colleghi, i controlli ActiveX non vengono visualizzate correttamente sul loro sistema meno che non cambiano le impostazioni della modalità di compatibilità.

3) Dopo l'applicazione di questo hack, i file di Excel in precedenza danneggiati sembrano fissare essi stessi quando si aprono, con tutti i comandi recuperare le loro dimensioni originaria destinazione.

Si prega di verificare e commentare, spero che questo possa aiutare qualcuno, evviva!

Ho lo stesso problema a volte. Nel mio caso, ho potuto replicare al 100% su un file, ma è stato incoerente su un file praticamente identico. Ho anche trovato l'errore dimensione non era permanente - sono riuscito a salvare e riaprire il file per ripristinare l'aspetto del pulsante. Potrei anche creare una nuova finestra e poi scarta la finestra danneggiata. Io uso una configurazione a singolo monitor.

Per quanto mi riguarda, il pulsante ridimensionata quando ho effettuato l'accesso al foglio di HPageBreaks di raccolta. Sono stato in grado di evitare il problema modificando temporaneamente la vista della finestra come segue:

ActiveWindow.View = xlPageBreakPreview
  ' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top