Ecco alcuni semplici modi per aiutarti a risolvere un nuovo problema con l’obiettivo del foglio di lavoro dell’errore di runtime 1004 di Excel vba.

Produco uno sguardo VBA su una sedia aggiunta a un altro tavolo aperto solo in una fase precedente nella mia macro contemporanea. La macro ha funzionato bene, ma di recente ha scoperto che stava perforando un errore di 1004 TB (“Impossibile ottenere la proprietà RoundDown di quella WorksheetFunction”).

Penso di aver appreso la causa degli errori (problema all’avvio di RoundDown), ma di solito non capisco perché questa attività sia in una grande macro, e la parte molto strana è cosa succede – se inserisco il parametro Debug , Continua. Con il codice presente mentre VBE, l’errore non si ripete (anche se ovviamente non cambia nulla).

Molte persone hanno problemi simili con la modellazione di questo errore incoerente, che cosa posso fare se vuoi davvero risolverlo?

Ho una certa familiarità con VBA – Excel, ma apprezzerei qualsiasi consiglio per altri passaggi di analisi. Alla fine mi sono chiesto se alcune persone avessero avuto dei fattori con il tavolo aperto, ma non capisco come.

Il codice html è qui. L’errore si verifica tramite la riga di commento.

  Funzione pubblica GetDatesA (sWorkbookname As String, sSheetname As String, sCell As String) semplicemente perché un optionDim vDateList () come un'opzione meravigliosa    Dim cella reale come intervallo    Il sole e così a lungo    Il set corrisponde come modo alle cartelle di lavoro currentCell (sWorkbookname) .Worksheets (sSheetname) .Range (sCell)    h significa 0    Rendere        Se Trim (currentCell.Value) implica "" Then            Fine        Un altro            ReDim Preserve vDateList (0 se vuoi specifico, da 0 a n)            vDateList (0, n) = WorksheetFunction.RoundDown (currentCell.Value, 0) 'Errore di rete questo fantastico vDateList (1, n) equivale a currentCell.Column            'Debug.Stampa currentCell.Value        Esci quando       Imposta currentCell su currentCell.Offset (0, 1)        = chimico n + 1    Loop fino alla fine currentCell.Column  
  • Versione Excel: quest'anno

  • Il file che hanno appena aperto si trova localmente interamente su alcune unità C:. la mia macro invia la tabella al team

  • La struttura del file necessaria per entrambi i file è .xls (ovvero Excel 2003) - non ho alcuna linea di condotta per modificarla

  • Windows 10 (non credo che questa attività sarà rilevante)

  • Sostituisci il foglio di lavoro con un altro un'interruzione (come Min (currentCell)) e questo può semplicemente peggiorare lo stesso problema

  • Sembra che un esempio che sblocca il file stia già progettando la recensione - stavo speculando su se ci fosse ancora un'occasione per aprire il libro (e non solo il libro principale con come la macro in alto) è e non si attiva mai quando si tratta di macro e questo mi preoccupa. Ma o anche se questa è la fine, non so come trovare accessibile!

Descrizione

Questi problemi di corrispondenza si manifestano quando viene utilizzato il Corrispondenza che fornisce buoni risultati ma non viene trovata alcuna corrispondenza.

Posizione Corrispondenza ti consente di conoscere la posizione all'interno del prezzo pieno unidimensionale a cui corrispondono parole o numeri.

Questo errore riguarda il "runtime 1004". L'errore di runtime è un tipo di errore perché si verifica durante l'esecuzione di un programma di coupon. VBA non conosce questi metodi finché non esegue effettivamente il codice del computer notebook. Smette di eseguire alcune leggi.

L'errore personalizzato "1004" sarà molto simile all'errore definito dall'applicazione enunciato dall'oggetto.

In altre parole, questo speciale errore di runtime si verifica quando VBA non è in grado di assicurarsi di esaminare un oggetto. La celebrazione della partita dovrebbe essere la differenza del partner di ritorno. Quando non viene trovata un'altra corrispondenza, VBA concorda sul fatto che esiste un fantastico oggetto di corrispondenza strano, e quindi il volume genera un errore di runtime particolare distinto 1004.

Visita https://software-solutions-online.com/run-time-error-1004-in-vba/ per vedere altri esempi tra errori di tempo prezioso.

Esempio 1: utilizzare invece Application.Match

Un problema notevole con l'utilizzo di WorksheetFunction.Match è che l'IT genera un errore supponendo che non venga trovata alcuna corrispondenza, il che riduce un po' le cose (vedremo il modo corretto di gestirlo in alcuni dei miei prossimi esempi). Ma perché non sfruttare questo? Application.Match invece?

excel vba runtime error 1004 worksheetfunction

Questo è lo stesso fatto, ancora , senza l'errore di espellere più della metà. Ciò significa che funziona esattamente allo stesso modo di WorksheetFunction.Match se a è veramente considerato una corrispondenza, ma se viene trovata poca o nessuna corrispondenza, probabilmente si spera che non generi un errore.

In guadagno, Application.Match riconosce l'errore e ha la possibilità di liberare questo posizionamento se lo si genera. Un altro modo per guardarlo è pensare a WorksheetFunction.Match come una funzione che crea per oggetto Match e / o quando non trova un nuovo accomodamento, non sa cosa implementare. p>Tuttavia,

Application.Match ha un concetto per provare a creare un oggetto collegamento ipertestuale e, se semplicemente non trova corrispondenze, aggiunge invece un meraviglioso oggetto errore (quindi non dovrebbe essere restituito alcun errore).

La visualizzazione degli errori deve essere noiosa; Arresta il progresso e il codice che puoi inserire senza oggetti validi come nuovo metodo di lavoro. Ma se gli utenti incontrano un oggetto di errore, allora hai bisogno di un oggetto valido con cui lavori senza sforzo molto bene. In questo esempio specifico, stiamo tutti cercando di assegnare un valore al dito target nella colonna 1, che dovrebbe essere quasi inesistente. Lascia la colonna 1 pulita per ora.

 Sub-No_Match ()matchRow è uguale a Application.WorksheetFunction.Match ("test", colonne (1), 0)La finale del sottomarino

 Sub-No_match ()matchRow è uguale ad Application.Match ("test", colonne (1), 0)Fine al codice sotto

L'esecuzione verrà eseguita in caso di problemi. Questo potrebbe essere sufficiente per garantire che il cliente non incorra mai in un terribile errore che interrompe l'intera applicazione. Di seguito è riportata un'illustrazione di come la maggior parte può potenzialmente gestire l'errore in un modo molto più significativo e pertinente per ogni scopo.

Esempio 2: gestione di un errore

In questo caso, ci occuperemo sicuramente Gestiamo l'errore in modo nuovo allo stesso modo in cui il flusso delle nostre direttive cambia a seconda che abbiamo ricevuto un errore durante il confronto.

Questo di solito è notevolmente necessario quando si codificano applicazioni reali, poiché se non troviamo ciò che stavamo cercando, dovremo occuparci di questi problemi di gestione.

Di solito quando è necessario abbinare questo ordine di parole per assicurarsi di poter capire in quale riga si trova rispetto alla colonna, quindi ognuno di noi fa qualcosa che consiste in quali esperti dichiarano riga/colonna.

 Sub-MismatchErrorHandling ()matchRow = Application.Match ("test", colonne (1), 0)If IsError (matchRow) Allora    MsgBox "Nessuna corrispondenza"Un altro    MsgBox "Corrispondenza stringa: pollici e quindi matchRowFinisci seLa fine del sottomarino

Nota che poiché stiamo lavorando come Application.Match, ora possiamo controllare l'effettivo evento che l'oggetto matchRow è l'errore esatto di questo oggetto. In questo caso, la cosa IsError (matchRow) valuterà come true per te e la finestra di messaggio dovrebbe elencare "Nessuna corrispondenza".

Riprendi

Utilizzando Application.Match invece coinvolto con WorksheetFunction.Will match Garantisce che l'idea assegnata per pubblicare una corrispondenza sia ampiamente specificata nel caso in cui non venga trovata alcuna corrispondenza.

Se viene trovata una corrispondenza, il contenuto riceve la corrispondenza completa, compreso il modo in cui il valore della corrispondenza. Ma, forse, non verrebbe certamente trovato, quindi attualmente l'errore verrà finalmente assegnato a questo oggetto e l'errore sarà un oggetto che può contenere descrizioni di errori di routine, ad esempio tag di errore, descrizione, numero. Se si tratta di un qualsiasi tipo di bug giocattolo o meno, può essere facilmente determinato con IsError (checkObj) con:

excel vba dell'errore 1004 del foglio di lavoro degli insegnamenti

applicazione contrassegnata insieme all'errore definito dall'oggetto, application.match, errore, errore di riproduzione con, prodotto, IsError, MATCH, proprietà, errore dell'insegnamento '1004 ', errore di runtime, sforzo del foglio di lavoro Calcul.match