Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: array en waarden toekennen  (gelezen 90074 keer)

0 leden en 1 gast bekijken dit topic.

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
array en waarden toekennen
« Gepost op: 03 mei 2019, 13:48:58 »
Hallo helpers en oplossers.

With Blad8.Columns(25)

    q = Array(ARM, ARG, KMT, KMB, KMO, PKB, GKD, GBD, GOD, GKR, GBR, GOR)
    r = 1
   
    For i = 39 To 50
       
        q(r) = .Cells(i, 1).Value
        r = r + 1
   
    Next i
End With

Met bovenstaande code probeer ik te bewerkstelligen dat de q array variabelen een waarde krijgen die in de for-next lus worden opgezocht. Nu wil het zo zijn dat q dus wel een waarde krijgt, en de juiste waarde, maar dat vervolgens bijv. "ARM" leeg blijft, ik zie dus een stap over het hoofd zodat die variabelen allemaal wel een waarde krijgen... Wie o wie zet mij even op het goede spoor?

Mijn dank is bij voorbaat al weer heel enorm groot.
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline alfa

  • Lid
  • *
  • Berichten: 83
  • Oplossing.be
Re: array en waarden toekennen
« Reactie #1 Gepost op: 03 mei 2019, 15:54:08 »
Nu wil het zo zijn dat q dus wel een waarde krijgt, en de juiste waarde, maar dat vervolgens bijv. "ARM" leeg blijft, ik zie dus een stap over het hoofd zodat die variabelen allemaal wel een waarde krijgen... Wie o wie zet mij even op het goede spoor?
Dat zijn de prille beginselen van wat een array is, even kijken in de Excel-vba-helpfile kan je heel wat wijzer maken.
1. Zet ARM, ARG, enz. tussen dubbele aanhalingstekens.
2. Een array begint standaard bij 0, "ARM" is dus niet q(1) maar q(0), tenzij je bepaald hebt (met 'option base') dat de array bij 1 moet beginnen.

Met bovenstaande code probeer ik te bewerkstelligen dat de q array variabelen een waarde krijgen die in de for-next lus worden opgezocht.
Met q = array(....) hebben de q-variabelen al een waarde gekregen.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #2 Gepost op: 03 mei 2019, 17:19:16 »
hoi alfa,

Dank voor je respons.

Ik gebruik idd option base.

Ik begin te vermoeden dat ik het dus verkeerd om doe, ik wil dus dat ARM e.d. een waarde toebedeeld krijgen. schijnbaar kan ik dus geen array op deze manier gebruiken....

Ik ga nog even verder studeren, en doe het nog wel even op de oude manier (ARM = Range("Y39").value)
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: array en waarden toekennen
« Reactie #3 Gepost op: 04 mei 2019, 09:44:27 »
Hey Johan,

Ik heb zo een vermoeden dat in de eerste reactie je vraag niet goed begrepen was.

Maar wat je wil is ook niet van het minste : je kan van waarden niet zomaar variabelen maken.
Ook de vraag naar het nut kan worden gesteld. Het is jou er waarschijnlijk om te doen betekenisvolle variabelenamen te maken voor gebruik verderop in je procedure ? Anders zouden natuurlijk q(1), q(2), enz. goed genoeg zijn.

Als je toch die richting uit wil is er wel iets te verzinnen dat in de buurt komt :
Dim q As Object
Set q = CreateObject("Scripting.Dictionary")
tmp = Array("ARM", "ARG", "KMT", "KMB", "KMO", "PKB", "GKD", "GBD", "GOD", "GKR", "GBR", "GOR")
For i = 1 To 12
    q.Add tmp(i), Blad8.Cells(i + 38, 25)
Next i
Je "nieuwe" variabelen zullen dan evenwel niet bv. ARM heten, maar wel q("ARM")
En je zal eventueel "Microsoft Scripting Runtime" nog moeten aanvinken bij "Verwijzingen"

Nu ja, ik geef het alleen maar mee als theoretische mogelijkheid, want
Citaat
nog wel even op de oude manier (ARM = Range("Y39").value)
".value" is standaard, dus die mag je weglaten, en de rest kan nog wat leuker :
With Blad8
    ARM = .[Y39]
End With

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #4 Gepost op: 04 mei 2019, 11:55:10 »
Hey pitufo,

Dank voor je bijdrage.
Ik wist idd niet helemaal zeker of ik mijn vraag op de juiste manier gesteld had. zo te zien begrijp jij mijn vraag uitstekend, dit overigens zonder afbreuk te willen doen aan de bijdrage van alfa want mijn vraagstelling laat ruimte voor interpretatie ;)

Ik zal jouw theoretische mogelijkheid morgen eens testen in mijn testbestand en zeker je laatste aanwijzing meenemen, wederom een leermomentje, in de verdere verwerking van mijn bestand.
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #5 Gepost op: 04 mei 2019, 15:41:51 »
chapeau pitufo,

Zelfs jouw theoretische mogelijkheid werkt zeer goed, ik ben weer zeer blij met de mogelijkheden die nu weer voor mij open komen te staan

Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: array en waarden toekennen
« Reactie #6 Gepost op: 04 mei 2019, 20:10:33 »
Hoi Johan,

jouw theoretische mogelijkheid werkt zeer goedIk noemde ze zelf enkel 'theoretisch' omdat ze niet 100% beantwoordt aan wat je vroeg, én omdat er een meer traditionele oplossing voorhanden was die ook niet te veel werk meebrengt.

In elk geval : 'k ben blij dat je er weer blij van bent geworden  :)
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #7 Gepost op: 04 mei 2019, 20:18:08 »
omdat ze niet 100% beantwoordt aan wat je vroeg

Niet 100%, maar met wat kleine aanpassingen in zowel mijn werkblad als in de code werkt het 100%, dus meer dan blij en zeer tevreden...
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #8 Gepost op: 13 mei 2019, 09:44:46 »
Nu ja, ik geef het alleen maar mee als theoretische mogelijkheid, want".value" is standaard, dus die mag je weglaten, en de rest kan nog wat leuker :
With Blad8
    ARM = .[Y39]
End With

Om toch nog even voort te borduren op ".[Y39]" is er een mogelijkheid om, bijv, variabele "i" hier op los te laten? Ik heb al wat mogelijkheden geprobeerd maar die werken niet....
.[Y] & i
.[Y & i]

of is dat simpelweg niet mogelijk in die verkorte range notering?

Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: array en waarden toekennen
« Reactie #9 Gepost op: 17 mei 2019, 17:58:38 »
Vroeger heb ik dat ook wel eens geprobeerd, Johan, maar ik vrees dat dit die ene stap te ver is.
Er zijn wel wat mogelijkheden om een cel te definiëren.
Laat ons even bij jouw Y39 blijven.
Voor de rij houden we het bij 39 (r), de kolom kan zowel "Y" (k) als 25 (k2) zijn.
Wat je bijvoorbeeld (er zijn er nog wat meer te verzinnen) kan doen is :
x = Range("Y39")
x = Range("Y" & r)
x = Range(k & r)
x = Cells(39, "Y")
x = Cells(r, k)
x = Cells(r, k2)
x = [Y39]

En zelfs dit lukt maar wordt hoofdzakelijk in Absurdistan gebruikt  :D :D :D :
x = Cells(622617)

Nog veel puzzelplezier !

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: array en waarden toekennen
« Reactie #10 Gepost op: 17 mei 2019, 18:28:02 »
Dank pitufo voor dit verhelderend antwoord.

Ik weet wat mij te doen staat en dat is zeker niet de versie uit Absurdistan :D :D :D Al concludeer ik daar dan wel weer uit dat excel waarschijnlijk intern wel die methode gebruikt...

Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

 


www.combell.com