[EXCEL/VBA] AutoFill Method

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 25-07 22:47
Hallo,

ik moet hier voor mijn stage een vba add-in maken. gaat prima, grote problemen tegen gekomen en allemaal (sommige minder elegant) weten op te lossen. alleen zit ik nu echt vast.

ik wil een rij selecteren aan de hand van allemaal variabelen. alleen krijg ik een error omdat ik een range probeer te selecteren voor me autofill met de index waarde van een kolom ipv de letter. ik heb van alles geprobeerd maar zit nu vast, iemand suggesties?

hier is de code:
code:
1
2
3
4
5
6
7
8
9
from = "1" & ":" & "4"
till = "11" & ":" & "4"

till2 = "11" & ":" & (4 + 1)

range1 = from & ":" & till
range2 = from & ":" & till2
    Range(range1).Select
    Selection.AutoFill Destination:=Range(range2), Type:=xlFillDefault


beetje slordige code, i know. maar gaat er om, zodra ik de 1 in A verander, en de 11 in K werkt alles wel, maar met de cijfers dus niet. en ik heb cijfers nodig ivm flexibiliteit van de code, moet toepasbaar worden op alle sheets

Heb het opgelost:
door eerst deze functie aan te roepen, maar ik van de index nummer, weer een letter. wie weet heeft iemand er ooit nog wat aan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'Bron: http://www.vba-programmer.com/Snippets/Code_Excel/Column_Numbers_to_Letters.html
Private Function ConvertColumnNumberToLetter(ByVal ColumnNumber As Integer) 
IntegerResult = ColumnNumber \ 26 
FractionalResult = (ColumnNumber / 26) - IntegerResult 
Remainder = ColumnNumber Mod 26 
If IntegerResult = 0 Then 
    FirstLetter = "" 
ElseIf IntegerResult = 1 And FractionalResult = 0 Then 
    FirstLetter = "" 
    ConvertColumnNumberToLetter = "Z" 
    Exit Function 
ElseIf IntegerResult > 1 And FractionalResult = 0 Then 
    FirstLetter = Chr(64 + (IntegerResult - 1)) 
    ConvertColumnNumberToLetter = FirstLetter & "Z" 
    Exit Function 
Else 
    FirstLetter = Chr(64 + IntegerResult) 
End If 
SecondLetter = Chr(64 + Remainder) 
ConvertColumnNumberToLetter = FirstLetter & SecondLetter 
End Function


edit:
heb een oplossing gevonden en deze toegevoegd.

[ Voor 41% gewijzigd door ProudElm op 29-05-2006 09:22 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je had ook gewoon de help kunnen lezen. Bij Range is twee argumenten meegeven ook mogelijk.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim from As Range
Dim till As Range
Dim till2 As Range

Set from = Cells(ColumnIndex:=1, RowIndex:=4)
Set till = Cells(ColumnIndex:=11, RowIndex:=4)
Set till2 = Cells(ColumnIndex:=11, RowIndex:=4 + 1)
    
Dim range1 As Range
Dim range2 As Range
Set range1 = Range(from, till)
Set range2 = Range(from, till2)
    
range1.AutoFill Destination:=range2, Type:=xlFillDefault


Wat tipjes:
- Selecteren is niet nodig. Je kan alles gelijk met je Range doen (voorbeeld: zie code).
- Kies duidelijke namen voor je variabelen. Na een paar dagen weet je niet meer wat from, fill, fill2, range1 en range2 voorstellen.

  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 25-07 22:47
bedankt, die code ziet er idd een stuk netter uit. ben al bezig om al mijn 'onhandige' namen er uit te slopen, zitter er nog al wat in..:)