• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Verwijzing naar cellen vanuit de vergelijkingseditor.

Status
Niet open voor verdere reacties.
@ snb,
Dat is inderdaad nog een mooie stap voorwaarts. Voor de huidige vraag gaven beide manieren hetzelfde resultaat maar deze biedt extra perspectieven :thumb:
Het enige dat ons nu nog te doen staat is wachten op een reactie van TS.
 
@enig

Als bij jou characters.count en words.count niet werken kun je wellicht textrange.length gebruiken:

Code:
With Blad1.Shapes("snb").TextFrame2.TextRange
  For j = .Length To 1 Step -1
    For jj = 1 To UBound(sp)
      If StrConv(.Characters(j), 64) = sp(jj, 1) Then .Characters(j) = sp(jj, 2)
    Next
  Next
End With
 
@ snb,

Leuk dat je het nog verder hebt willen uitspitten. Een klein beetje meedenken was mijn enige betrachting, dus ik hoop maar dat ik nergens de indruk heb gegeven dit zelf voor iets nodig te hebben ('t zou ook een vorm van inbreken zijn...)

Ik doe nogal vaak vreemde experimenten, de meeste ongeschikt voor publicatie, maar voor wat me nu is overkomen heb ik geen verklaring. Ik zal steeds de eerste zijn om te verkondigen dat iets niet zomaar uit het niets verandert, en ik kan ook niets verzinnen wat ik zou kunnen gedaan hebben om deze verandering uit te leggen, maar het is een feit dat words.count en characters.count nu wél werkt :eek:
Ik verwerp ook steevast alles met een bovennatuurlijk geurtje, dus echt: ik weet het niet (neen, ik heb ook geen andere Office geïnstalleerd ;))

Wat ik wel nog aan relevants kan melden is dat characters.count en length beide 102 geven, en words.count 5, dat zal dus wel versie-gerelateerd zijn.
 
Beste @snb, @Enigmasmurf

Bedankt voor jullie oplossingen.
Mijn reactie is behoorlijk wat verlaat. Door persoonlijke omstandigheden kon ik helaas niet eerder reageren.
Ik vraag jullie begrip hiervoor.

De code moet ik nog goed doorgronden :), maar ik begrijp -denk ik- wel de logica van jullie stappen.

@Enigmasmurf
Wanneer ik de getalswaarden in Excel converteer naar teksten (zie toevoeging in bijlage) dan werkt jouw oplossing ook om het €-teken en de punten en de komma's van in de getallen over te nemen.

Het klopt toch, dat dit een statische oplossing is? Gebaseerd op het aantal karakters in de tekst en de posities in de tekst die gewijzigd moeten worden.
Wanneer de formule (tekst) iets anders van opzet is, of ik heb een hele andere formule, dan werkt de macro niet meer.

@snb
Ik zie in jouw oplossing meer flexibiliteit door sec de Pmin, Pmax etc. te selecteren.
Helaas wordt in de laatste stap bij mij alleen de waarde n-waarde omgezet naar het getal (Excel 2013).
Nu doorgrond ik nog niet helemaal de Ubound in relatie tot de Array.
Kennelijk worden de Pmax, Pmin en spmax niet herkend en omgezet.
Ik hoop dat dit laatste stuk wel mogelijk is.
Of zie ik hier iets over het hoofd?
 

Bijlagen

  • Formule naar tekst - testen.xlsb
    29,4 KB · Weergaven: 5
Laatst bewerkt:
Heb je het bestand dat ik plaatste ongewijzigd wel getest ?
 
Ja, jouw geplaatste bestandje "__formule.xlsb" heb ik ongewijzigd getest.

Zie hieronder het resultaat.
 

Bijlagen

  • Knipsel.JPG
    Knipsel.JPG
    52,9 KB · Weergaven: 16
Laatst bewerkt:
Het lukt mij niet dat te reproduceren.

Test deze versie eens:
- downloaden
- opslaan
- openen
- knop klikken.
 

Bijlagen

  • __formule_002.xlsb
    25,4 KB · Weergaven: 7
Hier draait het in E 2010 vlekkelings.

Kun je een schermafdruk van jouw resultaat tonen ?
Ik vermoed dat je van hetzelfde verschijnsel last hebt als @enigma in eerste instantie.
Dat betekent dat je via stapsgewijze uitvoering in de VBEditor moet achterhalen of

Code:
    y= Sheet1.Shapes("snb").TextFrame2.TextRange.characters.count

een getal groter dan 1 oplevert (ik vermoed van niet).

PS. Heb je je laatste bericht verwijderd ???
 
Laatst bewerkt:
Gister op mijn tabblad nog even ingelogd en gekeken naar eventuele reacties. Kennelijk heb ik toen per abuis mijn laatste bericht verwijderd.

Dit bericht was niets anders dan dat de macro bij mijn in Excel2010 niet werkt - zie resultaat / screenshot in vorig bericht - maar dat het thuis in Excel 2016 wel correct werkt.

Zal straks de marco stap voor stap doorlopen.
 
Laatst bewerkt:
Zie in het bijgevoegde plaatje de waarden van de verschillen variabelen.
Hier gebeurt iets heel vreemds.

SP(3,1) krijgt een bijzonder resultaat.
Y geeft een vreemde waarde en geen 102.
Z geeft ook een vreemde waarde

Verder zie ik nu dat je over de cellen B1 t/m B4 tekstvakken geplaatst hebt.
Wat is daar de functie van?
 

Bijlagen

  • Knipsel2.JPG
    Knipsel2.JPG
    99,1 KB · Weergaven: 12
Als je de vorige berichten #22 in deze draad hebt gevolgd stond daarin, dat Characters.count en words.count soms niet de juiste aantallen weergeven.
Dat is bij jou waarschijnlijk ook het geval.
Ik ben daarom vooral geïnteresseerd in het resultaat van .characters.count in de macro en de waarde van variabele j.

Voeg svp niets toe aan de macro, dat maakt het analyseren alleen maar lastiger.

De vergelijkingseditor maakt geen gebruik van gewone tekens (ascii) maar van unicode-tekens.
Daarvoor zijn de 'tekst'vakken boven B1 en B4 ook bedoeld: die bevatten nl. ook unicode.
We moeten nl. de unicode uit de vakken B1 t/m B4 vergelijken met de unicode in de formule van de vergelijkingseditor.
 
Laatst bewerkt:
.characters.count geeft in totaal 102.

De variabele j loopt keurig van j = 102 naar 1.

.length geeft ook in totaal 102.
 
Mooi zo.
Laat dan de volgende versie lopen waarbij de foutafhandeling na het verwijderen van een eventueel aanwezige 'shape' "snb" weer ingeschakeld wordt.
Dan zien we vanzelf waar de fout optreedt.
 

Bijlagen

  • __formule_003.xlsb
    25,4 KB · Weergaven: 5
Ik krijg de volgende foutmelding:
Fout -2147024809 (80070057)
De index van de opgegeven verzameling valt buiten het bereik.

Code:
sp(n, 1) = StrConv(.Words(1), 64)

Blijft hangen bij de n=1
 
Als je met de cursor boven sp(n,1) gaat hangen zie je dan die melding, of als je boven .Words(1) met de cursor hangt ?
 
De melding komt tevoorschijn boven .Words(1)

sp(n,1) laat keurig "Pmax" zien bij n=1.
 
Kun je dan in het blokje waarin dit staat drie regels toevoegen ?

Code:
    For j = 1 To UBound(sp)
       With Sheet1.Shapes(sp(j, 1)).TextFrame2.TextRange
            msgbox  .Words.Count
            msgbox  .Characters.Count
            msgbox .Length
            sp(j, 1) = StrConv(.Words(1), 64)
       End With
    Next
 
Code:
n = 1
    For Each it In Array("Pmax", "Pmin", "n", "spmax")
       With Sheet1.Shapes(it).TextFrame2.TextRange
            MsgBox .Words.Count
            MsgBox .Characters.Count
            MsgBox .Length
            sp(n, 1) = StrConv(.Words(1), 64)
            n = n + 1
       End With
    Next

Zoals hierboven de MsgBox ingevoegd. Dit bedoelde je toch?
Resultaat: 0, 11, 11

Ik hoop dat dit meer inzicht geeft.
 
Laatst bewerkt:
Heel goed.
Dan ontvang je hierbij een aangepaste versie.
Aan jou de vraag of je die in de verschillende Excel-versies waarover je beschikt wil testen.
 

Bijlagen

  • __formule_004.xlsb
    25,6 KB · Weergaven: 9
Helaas gaat het nog niet helemaal goed

In eerste instantie verloopt alles goed. Maar zodra ik voor Pmax en Pmin waarden van bijvoorbeeld 5.000 en 2.000 invul, gaat het helaas weer fout (4 karakters?)
Bij getallen met meer dan 4 karakters gaat het wel goed.

Dezelfde fout ontstaat in:

Code:
If StrConv(.Characters(j), 64) = sp(jj, 1) Then .Characters(j) = sp(jj, 2)

J = 95 / jj = 3

Dit gebeurt zowel in Excel2010 als in Excel2016
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan