Hier zijn enkele eenvoudige manieren om u te helpen het probleem met de Excel vba runtime error 1004-werkbladfunctie op te lossen.

Ik kijk in VBA naar een tabel die is toegevoegd aan een andere tabel die in een eerdere fase in mijn nieuwe macro is geopend. De macro werkte prima, maar ontdekte onlangs dat er een fout van 1004 TB werd gegenereerd (“Kan de algemene eigenschap RoundDown van de WorksheetFunction niet krijgen”).

Ik denk dat ik de oorzaak van de fout begrijp (probleem bij het starten van RoundDown), maar ik begrijp daarom niet waarom deze taak wordt geactiveerd in een echt geweldige macro, en de rare kant is wat er gebeurt – als ik binnenkom de Debug-parameter, ga verder. Met de code die aanwezig is in VBE, die de fout gewoon niet vanzelf herhaalt (hoewel er duidelijk niets verandert).

Hebben veel mensen soortgelijke ervaringen met actrice deze inconsistente fout, dus wat moet ik doen als je wilt terugkeren om het te repareren?

Ik ben precies bekend met VBA / Excel, maar zou suggesties voor verschillende parseerstappen op prijs stellen. Ik vroeg me af wanneer sommige mensen problemen hadden met de zeer open tafel, maar ik weet niet hoe.

De code is wat volgt. De fout treedt op in de regel voor het achterlaten van een opmerking.

  Publieke functie GetDatesA (sWorkbookname As String, sSheetname As String, sCell As String) als een optieDim vDateList () als een optie    Dim huidige cel als zijnde bereik    De zon zorg en zo lang    De set komt overeen met de specifieke werkmappen currentCell (sWorkbookname) .Worksheets (sSheetname) .Range (sCell)    n manier 0    Maken        If Trim (currentCell.Value) = "" Dan            Einde        Een ander            ReDim Preserve vDateList (0 tot zeker, 0 tot n)            vDateList (0, n) impliceert WorksheetFunction.RoundDown (currentCell.Value, 0) 'Netwerkfout het is allemaal geweldig vDateList (1, n) betekent currentCell.Column            'Debug.Print huidigeCell.Value        Afsluiten wanneer       Stel currentCell in op currentCell.Offset (0, 1)        komt overeen met chemische n + 1    Loop tot currentCell.Column  
  • Excel-versie: 2010

  • Het bestand dat u zojuist hebt bekeken, bevindt zich lokaal op sommige C:-schijven. mijn macro brengt de naar het netwerk

  • De bestandsstructuur voor beide downloads is .xls (d.w.z. Excel 2003) - ik kan dit niet verschuiven

  • Windows tien (ik denk niet dat het relevanter zal zijn)

  • Vervang dit werkblad door een andere feestdag (zoals Min (currentCell)) en dat maakt hetzelfde probleem vaak ook erger

  • Het lijkt erop dat het ontgrendelen van het hele bestand de beoordeling al voltooit - ik vroeg me af of de kans groot was dat degenen die het boek openen (en niet alleen het type hoofdboek met de macro van boven) dat niet is geactiveerd, hoewel het om macro's gaat en dat maakt me de meeste zorgen. Maar zelfs als het het einde is, weet ik niet zeker hoe ik erachter moet komen!

Beschrijving

Deze matching-problemen treden op wanneer onze eigen Matching -functie is gekocht, maar er is geen match gevonden.

Positie Match laat uw hele gezin de positie weten van de exacte eendimensionale volledige prijs die overeenkomt met de tekst of het nummer.

Deze fout betreft deze specifieke "1004 runtime". Runtime-fout is het eigenlijke type fout dat optreedt en bovendien een couponcode uitvoert. VBA zal niets van deze methode weten totdat deze tool de computercode daadwerkelijk uitvoert. Het stopt met het uitvoeren van bepaalde code.

De aangepaste fout "1004" lijkt in veel opzichten erg op de door de toepassing gedefinieerde fout die is gedefinieerd vanwege het object.

In andere trefwoordzinnen treedt deze speciale runtime-fout op in het geval dat VBA een nieuw geweldig object niet kan onderzoeken. De viering van de fit moet het onderwerp zijn van de exacte terugkerende partner. Als er geen andere verbinding wordt gevonden, herkent VBA dat er op dit moment een fantastisch ongeïdentificeerd matchprobleem is, en daarom gooit Volume deze specifieke afspeelfout 1004.

Bezoek https://software-solutions-online.com/run-time-error-1004-in-vba/ waar u andere voorbeelden van waardevolle fouten in uw vrije tijd zult zien.

Voorbeeld 1: Gebruik in plaats daarvan Application.Match

Een opmerkelijke ziekte bij het gebruik van WorksheetFunction.Match is dat IT een foutmelding geeft als er geen gebeurtenis wordt gevonden, wat de zaken op de een of andere manier compliceert (in mijn derde voorbeeld zullen we zien hoe we hiermee kunnen werken). Maar waarom zou je dit niet gebruiken? Application.Match in plaats daarvan?

excel vba-afspeelfout 1004 werkbladfunctie

Dit is absoluut hetzelfde feit, maar zonder deze fout van het uitwerpen van de helft. Dit geeft aan dat het op dezelfde manier werkt als WorksheetFunction.Match als a wordt beschouwd als een overeenkomst, maar als er geen overeenkomst wordt gevonden, zal het waarschijnlijk geen fantastische fout opleveren.

Bovendien waardeert Application.Match de fout en kan deze plaatsing vrijgeven als u deze forceert. Een andere manier om ernaar te kijken is om WorksheetFunction.Match te zien als een goede solide functie die een Match-product maakt en / of als het vaak een nieuwe match vindt, niet altijd weet wat te doen. p>

Application.Match heeft echter een manier om een ​​verbindingsobject te proberen en te maken, maar als het gewoon geen overeenkomsten vindt, voegt het in plaats daarvan verbazingwekkend een foutobject toe (zodat er geen fout wordt geretourneerd).

Fouten weergeven is vervelend; Het lokaliseert de voortgang en code die u invoert terwijl het geen geldige objecten zijn als een werkplan. Maar als gebruikers een krachtig foutobject hebben, dan heb je een geschikt object waar je nu heel goed mee kunt werken. In dit voorbeeld proberen we allemaal een andere waarde toe te wijzen aan de middelvinger in kolom 1, die bijna niet bestaat. Laat kolom 1 leeg voor tegenwoordig.

 Sub-No_Match ()matchRow = Application.WorksheetFunction.Match ("test", kolommen (1), 0)Het einde van de belangrijkste onderzeeër

 Sub-No_Match ()matchRow = Application.Match ("test", kolommen (1), 0)Einde couponcode onder

Uitvoering zal worden uitgevoerd in het proces van problemen. Dit zou voldoende moeten zijn om ervoor te zorgen dat u nooit een vreselijke fout gebruikt die uw hele toepassing stopt. Hieronder is een bepaalde illustratie van hoe we de fout waarschijnlijk op een veel zinvollere en geschiktere manier voor elk doel kunnen aanpakken.

Voorbeelden: een fout afhandelen

In dit geval gaan we over We passen de fout op dezelfde manier aan als de stroom van betreffende richtlijnen, afhankelijk van of we een fout hebben opgelopen tijdens de vergelijking.

Dit is meestal erg nodig bij het coderen van echte applicaties, want als mijn echtgenoot en ik niet vinden wat we zoeken, zullen we al die managementproblemen moeten oplossen.

Meestal wanneer shoppers het woord shop moeten vinden om er zeker van te zijn dat u begrijpt in welke rij/kolom deze methode staat, dus doen we een stukje dat uit die rijkolom bestaat.

 Sub-MismatchErrorHandling ()matchRow = Application.Match ("test", kolommen (1), 0)Als IsError (matchRow) Dan    MsgBox "Geen overeenkomsten"Een ander    MsgBox "Match string: inches en matchRowStop alsHet opgeven van de onderzeeër

Merk op dat omdat we met Application.Match werken, we nu kunnen controleren of een specifiek matchRow-object de fout is van dit object. In dit geval zal de specifieke IsError (matchRow) -instructie voor u als waar worden beoordeeld en moet in het berichtvenster "Geen overeenkomst" worden weergegeven.

Hervatten

Application.Match gebruiken in plaats van WorksheetFunction.Will match Zorgt ervoor dat een bepaald idee dat is toegewezen om een ​​match te maken breed wordt gespecificeerd wanneer er geen complement wordt gevonden.

Als er een accent wordt gevonden, krijgt de site een volledige match, inclusief het matchpercentage. Maar misschien zal het niet groeien om gevonden te worden, dan zal de fout uiteindelijk toegewezen lijken aan het object, en bijgevolg zal de fout een protest worden dat standaardfoutverklaringen kan bevatten, bijvoorbeeld foutnaam, beschrijving, variëteit van. Of dit een speelgoedparasiet is of niet, kan gemakkelijk worden geleerd met IsError (checkObj) met:

excel vba runtime miscalculation 1004 worksheetfunction

gemarkeerde applicatie- of objectgedefinieerde fout, application.match, fout, foutafhandeling, product, IsError, MATCH, eigenschappen, runtime-fout '1004', van leerstellingen fout, Calcul.match werkbladfunctie