• 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.

een benoemd bereik maken in een macro

Status
Niet open voor verdere reacties.

Haije

Terugkerende gebruiker
Lid geworden
24 mrt 2009
Berichten
4.314
Besturingssysteem
Windows 11
Office versie
Office 2016 Professional Plus en Office 2010 Home & Student
Goedemiddag cracks,

in een macro bepaal ik een bereik met onderstaande code:

Code:
rnr = ActiveCell.Row - 1
info = "A6:A" & rnr

het wil me maar niet lukken om hier een benoemd bereik van te maken in dezelfde macro.

Wie kan me helpen?
 
Met de recorder:
Code:
ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=Blad1!R2C4:R17C6"
Ik weet niet of je dit bedoelt.
 
rdg,

bedankt voor de vlotte reactie, maar ik wil graag gebruik maken van de naam "info" die in mijn eerste post voorkomt, en dat lukt me maar niet.....
 
Lukt het hiermee Haije?

Code:
Set info = Range("A6:A" & rnr)
 
Code:
  ActiveWorkbook.Names.Add "info", "=Blad1!$A$6:$A" & ActiveCell.Row - 1
 
een benoemd bereik maken in een macro nadere uitleg

goedemorgen vrienden,

om mijn probleem duidelijk te maken eerst een stukje meer uitleg:

er wordt een tekstbestand aangeleverd (bijlage helpmij.txt) dat bewerkt moet worden:

bovenin het bestand helpmij.txt komen 3 regels voor met lijninformatie (regels 6,7 en 8)
- deze regels dienen gesplitst te worden > dat gaat prima met onderstaande code

daaronder (vanaf regel 11) staan dienstregeling tabellen.
- in de tabellen ontbreekt de lijninformatie en die wil ik toevoegen middels de macro en dat lukt (nog) niet.

Mijn gedachtegang is de volgende:

als ik van de lijninformatie een benoemd bereik maak, kan ik in de vlookup formule naar dat bereik verwijzen.

in helpmij resultaat.xls vind je het resultaat van de macro in het eerste tabblad; in het tweede tabbblad staat het gewenste resultaat.

Code:
Sub leesin()
richting = 0
'bestand openen
    vraag = InputBox("Welk bestand moet verwerkt worden?")
    openbest$ = "H:\" & vraag & ".txt"
    Workbooks.OpenText Filename:=openbest$, Origin:= _
        xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
        , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
        False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
'   splits de lijninformatie in 5 kolommen
    Cells.Find(What:="========== TRIP GROUP", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate
rnr = ActiveCell.Row - 1
lijninfo = "A6:A" & rnr
Range(lijninfo).Select
    Selection.TextToColumns Destination:=ActiveCell, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 2), Array(4, 2), Array(44, 1), Array(48, 2), Array( _
        90, 2), Array(150, 9)), TrailingMinusNumbers:=True
    ActiveCell.Offset(-1, 0) = "route"
    ActiveCell.Offset(-1, 1) = "omschrijving"
    ActiveCell.Offset(-1, 2) = "lijn"
    ActiveCell.Offset(-1, 3) = "bestemming ri. 1"
    ActiveCell.Offset(-1, 4) = "bestemming ri. 2"
lijninfo = "A5:E" & rnr
Range(lijninfo).Columns.AutoFit
' plaats de routeinformatie boven de tabellen
[e1].Select
[e1] = "=COUNTIF(A:A,""########## TRIPS"")"
aantalkeren = [e1].Value
[e1].ClearContents
For keren = 1 To aantalkeren
richting = richting + 1
    Cells.Find(What:="########## TRIPS", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Left(ActiveCell.Offset(1, 0), 4) <> "    " Then ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Clear
If richting = 1 Then ActiveCell.FormulaR1C1 = "=VLOOKUP(RIGHT(TRIM(R[1]C),4),[COLOR="Red"]lijninfo[/COLOR],4,0)"
If richting = 2 Then  ActiveCell.FormulaR1C1 = "=VLOOKUP(RIGHT(TRIM(R[1]C),4),[COLOR="red"]lijninfo[/COLOR],5,0)"
If richting = 2 Then richting = 0
Next keren
[a1].Select
[a1].ColumnWidth = 10
End Sub
 

Bijlagen

  • Helpmij.txt
    61,3 KB · Weergaven: 23
  • Helpmij resultaat.xls
    77 KB · Weergaven: 24
Is het niet mogelijk een komma-gescheiden bestand te ontvangen (of waarin velden door een ander teken worden gescheiden ) ?
Dan kun je alle gegevens eerst in een array zetten, waarna tenslotte alles in een werkblad wordt weggeschreven.
Dan hoef je in het werkblad geen formules te gebruiken.
 
snb,

neen, dat is helaas niet mogelijk.
 
niet mogelijk dus?

Vrienden,

uit het ontbreken van reactie leidt ik af dat niemand een werkbare oplossing heeft.
 
RedEvil,

inderdaad, waarom niet?

Dit is de oplossing die ik zocht:thumb:. Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan