Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zeilenanzahl festlegen per VBA
25.04.2016 10:53:26
Nico
Hallo zusammen!
Ich stehe gerade vor folgendem Problem:
Ich habe eine Datei mit mehreren Sheets, welche zum größten Teil mit diversen Formeln miteinander verknüpft sind. Eine Zeile entspricht hierbei einem separaten Datensatz (eine Immobilie). Die Daten beginnen in jedem Arbeitsblatt ab Zeile 10. Die Datei sieht standardmäßig immer 500 Datensätze (sprich: 500 Zeilen) vor, wird dadurch allerdings sehr groß.
Diese Datei möchte ich nun projektbezogen anpassen. Das heißt, ich hätte gerne einen Button "Datei anlegen" oder so, durch den ein Abfragefenster geöffnet wird. Hier soll gefragt werden, wie viele Datensätze die Datei umfassen soll. Gebe ich hier z.B. "57" ein, so soll mit der VBA Code in allen Sheets die Zeilen 67 bis 510 löschen.
Habt ihr eine Idee, wie das umzusetzen wäre?
Danke für eure Hilfe!
Grüße,
Nico

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenanzahl festlegen per VBA
25.04.2016 11:07:55
Piet
Hallo Nico,
Daten löschen ist das kleinste Problem, ich lese aber auch - viele verknüpfte Formeln.
Als Fan von Makro Lösungen bekomme ich bei vielen Formeln schnell Bauchschmerzen, denn
zu viele Formeln verlangsamen den Rechner, weil er bei jeder Eingabe viel berechnen muss.
Ich liebe feste Werte als Constants. Da gibt es nichts zu berechnen.
Meine Frage, inwieweit lassen sich die Daten, die sich nicht mehr veraendern umwandeln?
Namen, Adressen, Telfon Nr. Kunden Nr. -als Formeln- im Blatt haben ist m.E. überflüssig.
Vielleicht sollten wir auch wissen um wie viele Tabellen es geht, ob alle gleich aufgebaut
sind, und wie die grundlegende Datenstruktur aussieht, z.B. Text der Spaltenüberschriften.
Es gibt viele Profis die dazu sicher noch gute Ideen haben. Wir müssten aber die Struktur kennen.
Evtl. eine kleine Beispieldatei mit anonymen Daten wie "Mustermann"
mfg Piet

Anzeige
AW: Zeilenanzahl festlegen per VBA
25.04.2016 11:17:13
Nico
Hallo Piet!
Ja du hast sicher recht, die Datei ist mittlerweile recht umfangreich. Allerdings ist das eine Datei zur Berechnung von Cash Flow von Immobilien und soll daher ganz bewusst bei jeder Eingabe rechnen. Zwischen den Sheets "fließen" daher nur Daten, die auch für die Berechnung nötig sind. "Fixe" Werte gibt es in diesem Modell quasi keine, da alle Parameter variabel gehalten sind.
Wir reden etwa über 15 Sheets. Der Aufbau aller Sheets ist dabei weitgehend gleich: Zeilen 1-9 sind Kopfspalten bzw. allgemeine Eingabespalten, ab Zeile 10 beginnen die Objekte. Die Anzahl der Spalten variiert stark zwischen den Arbeitsblättern.
Grüße,
Nico

Anzeige
AW: Zeilenanzahl festlegen per VBA
25.04.2016 11:18:02
ChrisL
Hi Nico
Ohne die Sache zu hinterfragen:
Sub Mach()
Dim vInput As Variant
Dim WS As Worksheet
vInput = Application.InputBox("Bitte Ganzzahl eingeben:", "Titel lösche Daten")
If vInput = False Or vInput = "" Then Exit Sub
If Not IsNumeric(vInput) Then
MsgBox "keine Zahl"
Exit Sub
End If
If CCur(Round(vInput, 0))  CCur(vInput) Then
MsgBox "keine Ganzzahl"
Exit Sub
End If
For Each WS In ThisWorkbook.Worksheets
WS.Rows(CLng(vInput) + 10 & ":10000").Delete
Next WS
End Sub

cu
Chris

AW: Zeilenanzahl festlegen per VBA
25.04.2016 12:00:30
Nico
Hi Chris!
Wow - vielen Dank! Genau das habe ich gesucht! Bin begeistert!
Grüße,
Nico

Anzeige
AW: Zeilenanzahl festlegen per VBA
25.04.2016 12:02:29
fcs
Hallo Nico,
hier mein Lösungsvorschlag.
Gruß
Franz
Sub ImmobilienlisteReduzieren()
Dim wkbAktiv As Workbook
Dim wks As Worksheet
Dim intS As Integer
Dim Zeile1 As Variant, ZeileL As Long, StatusCalc As Long
Dim msgText As String, msgTitel As String
msgTitel = "Zeilen in Immobilienliste löschen"
Set wkbAktiv = ActiveWorkbook
msgText = "Anzahl Datensätze in Datei"
Zeile1 = Application.InputBox(msgText, msgTitel, ActiveCell.Row - 9, Type:=1)
If Zeile1 = False Then
'Abbrechen wurde gewählt
ElseIf Zeile1 = 1 sein!"
MsgBox msgText, vbOKOnly + vbInformation, msgTitel
Else
Zeile1 = 9 + Zeile1
ZeileL = 510  'letzte zu löschende Zeile
msgText = "In jedem Tabellenblatt jetzt die Zeilen " & Zeile1 _
& " bis " & ZeileL & " löschen?" & vbLf & vbLf _
& "Letzte Gelegenheit abzubrechen!"
If MsgBox(msgText, vbOKCancel + vbDefaultButton2 + vbQuestion, msgTitel) = vbOK Then
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For intS = wkbAktiv.Worksheets.Count To 1 Step -1
Set wks = wkbAktiv.Worksheets(intS)
With wks
.Range(.Rows(Zeile1), .Rows(ZeileL)).Delete shift:=xlShiftUp
End With
Next
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End If
End If
End Sub

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige