Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antwortento 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)
Antwortento 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.
Antwortento top
#4
Hallo Christa,

die Zahl der Zeilen eines ist ja wohl nicht gemeint ... ;)

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!
Antwortento top


Gehe zu:


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