Array's

Status
Niet open voor verdere reacties.

rg222

Nieuwe gebruiker
Lid geworden
1 jul 2013
Berichten
3
ik ben op zoek naar een manier om een array te maken waarbij de regel nummer als een variabel kan neerzetten

dit is het zoals ik het nu heb:

Code:
bereik = Array("AG7", "AH7", "AI7", "AJ7", "AK7", "AL7", "AM7")

en nu ben ik opzoek naar een manier waarbij ik de cellen net als hieronder kan neerzetten:

Code:
.Cells(Rij, "E").Value
.Cells(Rij, "F").Value
eerst het regel nummer en dan de kolom

ik heb iets geprobeerd als: Array((rij,"J"), (rij,"K")) maar dat lukt niet

kan iemand mij verder op weg helpen? (of is wat ik wil helemaal niet mogelijk)
 
Eerst waarom? hoe wil je het gaan gebruiken? waarom niet gewoon opslaan als 2 getallen? waarom letters gebruiken? Het verhaal is een beetje onduidelijk in de bedoeling en toepassing, maar volgens mij zijn er betere / efficiëntere methoden
 
Het gaat niet alleen om die 2 waarden. het zijn er ongeveer 15. en als ik het in een array kan zetten scheelt dat veel ruimte.
het komt erop neer dat ik uit een achterliggend excel tabblad een aantal waarden wil ophalen en die weer neerzetten in het actieve tabblad.
nu is het enige wat niet lukt om de rij met waarden in een array te zetten.

een andere oplossing die ik had was voor elk van die getallen die ik nodig heb een variable te maken en 1 voor 1 weer terug te zetten.
maar dan krijg ik een hele lange lijst.
 
Ja, maar wat verbeterd dat tov van het gebruik van:

Range(bereik)

OF

Cells(4,7) // ipv (4, "G")

Waarom wil je het uitsplitsen? of anders, waarom gebruik je niet 2 sets getallen? Je gebruik van arrays is goed, maar ik begrijp niet helemaal waarom je huidige oplossing niet voldoet, en waarom je anders niet getallen gebruikt voor je coördinaten en letters wil gebruiken
 
ik ben pas begonnen met vba en dat je ook coördinaten kan gebruiken wist ik niet.
en ik wilde array's gebruiken omdat dat veel ruimte scheelt.
ik heb nu voor de eerste mijn andere oplossing gebruikt en dan komt er dit uit:

Code:
Sub Documentophalen()
Dim oSht As Worksheet
    Dim strSearch As String
    Dim aCell As Range
    Dim rij2
    Dim Datum, Nummer, Kenteken, GlL, GlKG, GelvL, GelvKg, Temp, TrKg, TrLtrs, Gemisch, Sg, Rij
   ' On Error GoTo Err
    Set oSht = Sheets("gas")
    strSearch = Range("Q11")
    Set aCell = oSht.Range("C6:C30").Find(What:=strSearch)
    If Not aCell Is Nothing Then
      '  MsgBox "Value Found in Cell " & aCell.Row
      Rij = aCell.Row
       Datum = oSht.Cells(Rij, "B")
       Nummer = oSht.Cells(Rij, "C")
       Kenteken = oSht.Cells(Rij, "D")
       GlKG = oSht.Cells(Rij, "E")
       GlL = oSht.Cells(Rij, "F")
       GelvL = oSht.Cells(Rij, "G")
       GelvKg = oSht.Cells(Rij, "H")
       TrKg = oSht.Cells(Rij, "I")
       TrLtrs = oSht.Cells(Rij, "J")
       Gemisch = oSht.Cells(Rij, "K")
       Temp = oSht.Cells(Rij, "L")
       Sg = oSht.Cells(Rij, "M")
       With Sheets("Blad1")
                     rij2 = 12
                     .Cells(rij2, "A").Value = Datum
                     .Cells(rij2, "B").Value = Nummer
                     .Cells(rij2, "C").Value = Kenteken
                     .Cells(rij2, "D").Value = GlKG
                     .Cells(rij2, "E").Value = GlL
                     .Cells(rij2, "F").Value = GelvL
                     .Cells(rij2, "G").Value = GelvKg
                     .Cells(rij2, "H").Value = TrKg
                     .Cells(rij2, "I").Value = TrLtrs
                     .Cells(rij2, "J").Value = Gemisch
                     .Cells(rij2, "K").Value = Temp
                     .Cells(rij2, "L").Value = Sg
    End With

        
    End If
    Exit Sub
'Err:
'    MsgBox Err.Description
End Sub

ik vond het een beetje lang en ik moet nu nog 4 andere van deze codes maken die zo ongeveer het zelfde doen.
 
Je kunt dus zoiets gebruiken als:

Code:
'code vanaf:  rij=acell.row
for i = 2 to 14
with Sheets("blad1")
.cells(12, i-1) = Sheets("gas").cells(rij,i)
next i

Code is even uit de losse pols, maar volgens mij is dat ongeveer wat je wilt
 
Nog lossere pols
Code:
Sub tst()
    With Sheets("Gas")
        Sheets("Blad1").Cells(12, 1).Resize(, 12) = .Range("C6:C30").Find(.Range("Q11").Value).Offset(, -1).Resize(, 12).Value
    End With
End Sub
 
Is dat niet hetzelfde als autofilter gebruiken ?
 
Kan ook, maar omdat het maar om 1 regel vinden gaat, leek mij dit een beetje overkill.
 
Gezien de VBA vaardigheden van de TS misschien wel 'under'kill.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan