Excel macro vraag

Status
Niet open voor verdere reacties.

DuBoiz

Nieuwe gebruiker
Lid geworden
13 aug 2012
Berichten
2
Hallo iedereen ik heb een vraagje waar ik niet uitkom dat waarschijnlijk wordt veroorzaakt door mijn onwetendheid van visual basic

Mijn vraag is dat ik een range wil selecteren van column AE cel 2 t/m AT cel met de laatste row die informatie bevat.
Ter informatie de range bevat ook lege cellen.

Ik kom er zelf niet uit verscheidene websites bekeken maar wat ik wil heb ik niet specifiek kunnen vinden
en zelf beschik ik niet over de kennis om aanpassingen te maken om dit wel werkend te krijgen.

Wie kan mij helpen.

Alvast bedankt
 
Beste,

Gebruik deze code in een userform:

Private Sub CommandButton1_Click()
Dim dblMaxRows As Double, dblMaxRows_Temp As Double
Dim intColnummer As Integer
Dim strGebied As String

dblMaxRows = 0

For intColnummer = 31 To 46
dblMaxRows_Temp = Sheets("Blad1").Cells(Rows.Count, ColLetter(intColnummer)).End(xlUp).Row
If dblMaxRows_Temp > dblMaxRows Then dblMaxRows = dblMaxRows_Temp
Next intColnummer

If dblMaxRows > 0 Then
strGebied = "AE2:AT" & dblMaxRows
Sheets("Blad1").Range(strGebied).Select
End If
End Sub


En deze in een module:

Function ColLetter(ColNumber As Integer) As String
ColLetter = Left(Cells(1, ColNumber).Address(False, False), _
1 - (ColNumber > 26))
End Function



Dit is een flexibele oplossing.

Ik hoop dat je geholpen bent.


Groeten,

Fred

XLFAC
 
Selecteren van een bereik is in de meeste gevallen overbodig............

Code:
Range("AE2:AT" & Cells.SpecialCells(xlCellTypeLastCell).Row).Select
 
@HSV, Dee code is niet altijd zuiver. Ik heb een sheet waaruit dit blijkt.
De oplossing die ik net heb gegeven is, volgens mij iets wat omslachtig, maar is zuive.

Probeer het zelf, dan zie je dat de laatste code af en toe een gebied selecteerd waar er geen data aanwezig is.
 
@xlfac

Gebruik svp code tags !
Waarom een userform ???

Code:
intersect(columns(31).resize(,26),usedrange)
 
Het hoeft niet perse in een userform, maar ook direct onder een knop op de werkblad.
 
Bedankt voor jullie snelle response en hulp

Al werkt het wel het is niet wat ik in gedachten had.
Ik zou graag een button in me menu willen hebben zoals bij mijn andere macro die standaard laad doordat deze in Personal.xslb staat
Dus wil ik een macro toewijzen aan een button is dat mogelijk?
 
U zou kunnen zoeken op:
add button to a ribbon in excel.

En een macro aan deze knop toekennen.

Dit is mogelijk.
 
@xlfac, klopt, is niet altijd zuiver, maar voor de zuiverheid kan dat toch stukken korter.
Code:
Sub hsv()
Dim Rng As Long, y As Long, i As Long
 y = 0
  For i = 31 To 46
    Rng = Cells(Rows.Count, i).End(xlUp).Row
 If Rng > y Then
    y = Rng
  End If
    Next
  Range("AE2:AT" & y).Select
End Sub
 
of
Code:
Sub snb()
 With Intersect(Columns(31).Resize(, 16), UsedRange).SpecialCells(2)
    MsgBox Cells(1, 31).Resize(.Areas(.Areas.Count).Cells(.Areas(.Areas.Count).Cells.Count).Row, 16).Address
  End With
End Sub
 
Werkt weer perfect @snb.

Maar waarom gebruik jij altijd usedrange zonder object?
Ik krijg daar altijd een foutmelding op.
Code:
With Intersect(Columns(31).Resize(, 16), [COLOR="#FF0000"]Sheets(1).[/COLOR]UsedRange).SpecialCells(2)

Hoe zit dat.
 
HSV zei:

@HSV

Ik zet Macrocode altijd in de macromodule van het object waarop de code van toepassing is.
Als ik de usedrange van Blad1 wil weten zet ik de code in de macromodule van Blad1; als ik een knop in een userform een opdracht wil geven zet ik die code in de codemodule van het userform; etc.
Dan hoef je geen verwijzing te maken naar het object dat de macro bevat; de code gaat er impliciet vanuit dat de code betrekking heeft op het macro bevattende object, tenzij anders aangegeven (bijv. Blad2.usedrange, sheets("HSV").usedrange, sheets(12).usedrange).
Dat vind ik het aardige aan programmeertalen; ze werken met een erg efficiënte 'default'.
Daarom vind ik die Me.Textbox1.Text code, die in de macromodule van een userform hoort te staan en daarom met TextBox1.Text voldoende is beschreven ook zo irritant.
 
Laatst bewerkt:
@snb,

Duidelijk; bedankt voor je reactie en uitleg.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan