Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Strukturierung der Funktion Autoausfüllen
#1
Hallo liebe VBA Freunde,
ich habe eine kleines, voll funktionsfähiges Makro geschrieben. Es hat die einfache Aufgabe, die Spalte
A in Abhängigkeit der in Spalte B stehenden Einträge mit den Zahlen 1 bis X durchzunummerieren.
Stehen in Spalte B 50 Einträge, stehen in Spalte A die enstsprechenden Zeilennummern von 1 bis 50.

Die Formel Autoausfüllen habe ich selbst geschrieben, aber leider ist sie tierisch lang.
1. Wie strukturiere ich hier besser?
2. Falls es ein VBA Genie, der diese Aufgabe mit besseren Code erledigen kann, gerne!




Code:
vbstr = "Blatt1"

'Ausfüllen der Spalte A in Abhängigkeit der in Spalte B stehenden Zelleneinträge
Worksheets(vbstr).Columns(1).Clear
Worksheets(vbstr).Cells(1, 1).Value = 1
Worksheets(vbstr).Cells(2, 1).Value = 2
Worksheets(vbstr).Range("A1:A2").AutoFill Destination:=Worksheets(vbstr).Range("A1:A" & Worksheets(vbstr).Range("B" & _
Worksheets(vbstr).Columns(2).Cells.Count).End(xlUp).Row), Type:=xlFillDefault
to top
#2
Hallo Christa,

viel kann man bei einem so kurzen VBA-Code nicht erreichen.
Das wäre eine Alternative, getestet unter 2013 / 32 bit. Eventuell brauchst Du bei Deiner 64 bit Version bei der WorksheetFunction wieder die Application davor.

Code:
Sub Makro1()
'Variablendeklarationen
Dim vbStr As String, loAnz As Long
'Zuweisung Tabellenname
vbStr = "Tabelle1"
'Mit der Tabelle
With Worksheets(vbStr)
  'Anzahl Eintraege in Spalte B feststellen
  loAnz = WorksheetFunction.CountA(.Columns(2))
  'Spalte A leeren
  .Columns(1).Clear
  'Anfangswert 1 in A1 setzen
  .Cells(1, 1).Value = 1
  'Spalte A entsprechend Anzahl Eintraegen ausfuellen
  .Cells(1, 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=loAnz, Trend:=False
'Ende Mit der Tabelle
End With
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Hallo André,
sehe gerade Deinen Code. Vielen Dank schon mal dafür.
Auf jeden Fall, interessant und werde ihn später am Tag
mal testen.
to top
#4
Hallo Christa,

die Zahl der Zeilen eines ist ja wohl nicht gemeint ... Wink

Angenommen, der Start der entsprechenden Werte ist nicht immer in Zeile 1, dann bietet sich erste Makro an:
Code:
Option Explicit

Sub AutoAusfuellen()
   Dim fRow As Integer, lRow As Integer
   Dim i As Integer, Diff As Integer
  
   With Sheets("Blatte1")
      .Columns(1).ClearContents
      fRow = 5 'Anpassen, erste Zeile mit Daten in Spalte_B
      lRow = .Cells(Rows.Count, 2).End(xlUp).Row
      Diff = fRow - 1
      For i = fRow To lRow
         .Cells(i, 1) = i - Diff
      Next i
   End With
End Sub

Sub AutoAusfuellenStartInZeile1()
   Dim lRow As Integer
   Dim i As Integer
  
   With Sheets("Blatt1")
      .Columns(1).ClearContents
      lRow = .Cells(Rows.Count, 2).End(xlUp).Row
      For i = 1 To lRow
         .Cells(i, 1) = i
      Next i
   End With
End Sub
Das zweite Makro ist etwas kürzer, dafür muss es aber immer A1 sein, wo die 1 hinein kommt. Alternativ kannst du natürlich auch Funktion ZEILE() einsetzen (in VBA: WorksheetFunction.Row() ).
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Teilweises AutoAusfüllen Olivenbaum2013 13 99 15.11.2016, 11:47
Letzter Beitrag: Olivenbaum2013
  Zählen-Funktion in Kombination mit Wenn-Funktion? veve 22 1.202 09.05.2016, 08:02
Letzter Beitrag: steve1da
  VBA - Autoausfüllen mit Bedingungen EmanuelG 4 1.207 29.10.2014, 19:51
Letzter Beitrag: EmanuelG

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste