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

excel bereik met een variabel kolom einde

Status
Niet open voor verdere reacties.

mvraag

Gebruiker
Lid geworden
28 jul 2014
Berichten
17
Bekijk bijlage excel bereik met een variabel kolom einde.xlsmhallo ,

ik hoop dat jullie me kunnen helpen met mijn vraag

hoe kan ik een bereik die in "normale" gevallen gebaseerd is op een absolute cel verwijzing , welk dan via een macro word gekopieerd
aanpassen zodat deze ook variabel kolom lengtes accepteert (die kunnen voorkomen) ?

zie voorbeeld
de macro die is opgenomen is voor de zgn "normale" gevallen
de namen kolom ( kolom A ) kent de waarden 1 tm 14 ( maw dus 14 rijen in totaal )
en 5 kolommen voor informatie ( kolom B t/m F )
(de waarden 15 t/m 20 in de namen kolom en de bijpassende rijen horen niet in het selectie bereik )

ik heb een voorbeeld van een variatie opgenomen
(zie de geel gearceerde rijen in het voorbeeld)
de waarde 4 in de namen kolom is verdubbeld , waardoor deze dus het aantal rijen vergroot tot 15

waardoor de rij in de namen kolom met waarde 14 buiten de selectie valt :(
(zie de oranje gearceerde rij in het voorbeeld)
(nu heb ik enkel 1 variabele , 1 verdubbeling opgenomen, in theorie kan iedere waarde veelvoudig verdubbelen )


hoe kan ik het bereik aanpassen in visual basic
zodat deze mogelijke variabelen worden opgenomen in het bereik

Sub test()
'
' test Macro
' test
'
' Sneltoets: CTRL+a
'
Range("A1:F15").Select
Selection.Copy
Sheets("Blad2").Select
Range("A1").Select
ActiveSheet.Paste
End Sub


mvg m :)
 
Geef het bereik A1:F16 een naam(bv. bereik) en gebruik deze in je macro:

Code:
Sub test()
 '
 ' test Macro
 ' test
 '
 ' Sneltoets: CTRL+a
 '
     Range("bereik").Copy Sheets("Blad2").Range("A1")
 End Sub
 
M,

Hierbij de code om te bepalen waar de scheiding ligt van de regels boven of onder de 14.

Code:
Sub test()

Dim nTeller As Integer

With Sheets("Blad1").Range("A2")
    Do While .Offset(nTeller) < 15
        nTeller = nTeller + 1
    Loop
    Range("A1:F1").Resize(nTeller + 1, 6).Copy
    Sheets("Blad2").Range("A1").PasteSpecial
End With
End Sub

Veel Succes.
 
Geef het bereik A1:F16 een naam(bv. bereik) en gebruik deze in je macro:

Code:
Sub test()
 '
 ' test Macro
 ' test
 '
 ' Sneltoets: CTRL+a
 '
     Range("bereik").Copy Sheets("Blad2").Range("A1")
 End Sub

geachte heer cobbe
dank voor uw reactie

het selectie bereik heeft een vast begin punt maar heeft een variabel eindpunt in dit voorbeeld is dit F16
maar het eindpunt kan elk willekeurig F nummer zijn na F15 , naargelang hoeveel rijen er per periode handmatig worden toegevoegd
waardoor de rij met waarde 14 (staan in kolom A / namen ) buiten de selectie valt
maar de rij met waarde 14 behoort het einde van de selectie te zijn :)
en vormt zo een variabel einde die ik niet kan benoemen, met een absolute cel toewijzing omdat ik niet weet in welke cel, waade 14 zal terechtkomen .

gr m
 
Laatst bewerkt:
Heb je de test gedaan?

Mijnheer Cobbe. :)
 
Heb je de test gedaan?

Mijnheer Cobbe. :)

hallo,

ik heb gereageerd op uw bericht
zie mijn bericht aan u van 11:14

ik zag dat u het bereikeinde had geplaatst op F16 ( wat zo is in dit voorbeeld ) , maar dit bereik kan ook een ander F nummer als eind cel hebben .

gr m :)
 
Laatst bewerkt:
Code:
Sub test()
'
' test Macro
' test
'
' Sneltoets: CTRL+a
'
    frow = Application.Match(14, Sheets("Blad1").Columns(1), 0)
    Sheets("Blad2").Cells(1).Resize(frow, 6) = Sheets("Blad1").Range("A1:A" & frow).Resize(, 6).Value
End Sub
 
M,

Hierbij de code om te bepalen waar de scheiding ligt van de regels boven of onder de 14.

Code:
Sub test()

Dim nTeller As Integer

With Sheets("Blad1").Range("A2")
    Do While .Offset(nTeller) < 15
        nTeller = nTeller + 1
    Loop
    Range("A1:F1").Resize(nTeller + 1, 6).Copy
    Sheets("Blad2").Range("A1").PasteSpecial
End With
End Sub

Veel Succes.
----------------------------------------------------------------------------------------------
geachte Elsendoorn
ik ben aan het multitasking en naast mijn normale werk taken , werk ik aan het document.
ik heb je code in VB geplakt , en werk prima na enkele testen in het voorbeeld , dank je wel :)

ik vroeg me af, is er een max aantal variabelen waar de formule rekening me houd ?
als test heb ik 12 variabelen (rijen toegevoegd) , en werkt de formule klasse :)

ik heb nog niet de kans gehad om je code in het originele bestand te testen , ik laat van me horen :)
graag zou ik ook een uitleg bij de formule ontvangen zodat ik deze kan begrijpen en hem waar nodig kan aanpassen

groetjes M :)


------------------------------------------------------------------------------------------------------------------
echter als ik de code vertaal naar het origineel gaat het mis :(
ik kan het origineel niet uploaden :( daar heb ik geen toestemming voor

gr m
 
Laatst bewerkt:
Code:
Sub test()
'
' test Macro
' test
'
' Sneltoets: CTRL+a
'
    frow = Application.Match(14, Sheets("Blad1").Columns(1), 0)
    Sheets("Blad2").Cells(1).Resize(frow, 6) = Sheets("Blad1").Range("A1:A" & frow).Resize(, 6).Value
End Sub

hallo warme bakkertje
dank je voor je reactie

ik was de geposte oplossing van Elsendoorn2134 aan het proberen en deze werkt heel goed :) in het voorbeeld
en ik hoop dat deze net zo goed gaat werken in het orginele bestand , dat moet ik nog proberen

gr m :)
 
hernieuwde vraag , verzoek tot controlle

Bekijk bijlage 215615Bekijk bijlage 215617

hallo Elsendoorn2134 / geachte lezer

ik heb het bereik trachten te vergroten [Range("A1:F1") naar Range("A1:L1")] in de VB macro , maar dit werkt niet , en ik zie niet waarom het niet werkt
als ik het bereik vergroot in vb formule behoud hij het oude selectie bereik aan :(Bekijk bijlage 215621
zie voorbeeld "excel bereik met een variabel kolom einde-V3" helemaal onderaan :)

Sub test()
'
' test Macro
' test
'
' Sneltoets: CTRL+a
'
Dim nTeller As Integer

With Sheets("Blad1").Range("A2")
Do While .Offset(nTeller) < 15
nTeller = nTeller + 1
Loop
Range("A1:L1").Resize(nTeller + 1, 6).Copy
Sheets("Blad2").Range("A1").PasteSpecial
End With
End Sub


gr mBekijk bijlage excel bereik met een variabel kolom einde-V3.xlsm
 
Laatst bewerkt:
Code:
Range("A1:L1").Resize(nTeller + 1).Copy
 
Laatst bewerkt:
Gebruik svp codetags en om welke van de 4 bijlagen gaat het?
 
het vergroten van het bereik is gelukt who ho dankje :)

nu 't volgende probleem , als ik een tabblad wil hernoemen in VB eerst aangepast in de tabel zelf
gaat dat weer niet , blad 1 is nu steen 1 , waarom gaat dit niet ?

sorry voor de vele bijlages de oude bijlages laten zich niet wissen :(
het gaat om de bijlage "excel bereik met een variabel kolom einde-V5.xlsm"

waar hinkt mijn logica ?
gr m

Bekijk bijlage excel bereik met een variabel kolom einde-V5.xlsmBekijk bijlage excel bereik met een variabel kolom einde-V5.xlsm
 
dit is wat anders
Code:
With Sheets("steen1").Range("A2")
Spatie!
 
dit is wat anders
Code:
With Sheets("steen1").Range("A2")
Spatie!

Sub test()
'
' test Macro
' test
'
' Sneltoets: CTRL+a
'
Dim nTeller As Integer

With Sheets("steen1").Range("A2")
Do While .Offset(nTeller) < 15
nTeller = nTeller + 1
Loop
Range("A1:L1").Resize(nTeller + 1).Copy
Sheets("Blad2").Range("A1").PasteSpecial
End With
End Sub


geeft nog fout melding , wat doe ik fout
 
1. de quote is onnodig;
2. de code staat niet tussen tags;
3. je geeft niet aan welke foutmelding je krijgt;
4. <CTRL> + a is een nogal een slechte keuze.

Klik op knop 1 en de handel staat in blad2.
 

Bijlagen

  • excel bereik met een variabel kolom einde-V5.xlsm
    18,3 KB · Weergaven: 35
1. de quote is onnodig;
2. de code staat niet tussen tags;
3. je geeft niet aan welke foutmelding je krijgt;
4. <CTRL> + a is een nogal een slechte keuze.

Klik op knop 1 en de handel staat in blad2.


hoi venA zag je relatie verlaat , ben het aan het nakijken :)
weer een stap op weg dankje :)
kan ik nu ook zonder meer blad 2 veranderen in steen 2 bv ?

Sub test()
Dim nTeller As Integer
With Sheets("steen1").Range("A2")
Do While .Offset(nTeller) < 15
nTeller = nTeller + 1
Loop
Range("A1:L1").Resize(nTeller + 1).Copy
Sheets("steen2").Range("A1").PasteSpecial
End With
End Sub


gr m :)


nadat ik de wijziging maakte gaf die bij
Sheets("steen2").Range("A1").PasteSpecial
weer de fout melding

en ik moet toch kunnen aanpassen toch ?
ik mis iets hier :(
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan