PDA

Vollständige Version anzeigen : VBA CMD "Zeilen Überspringen"


Lilalauneandreas
01.10.2016, 14:55
Hallo Excelexperten, :)

danke erst mal für die kompetenete Hilfe hier im Forum. Dadurch bin ich sehr weit gekommen.

Meine Userform1 läuft sehr gut. Ein paar Kleinigkeiten sind aber noch.:rolleyes:


Ich lade mal eine Beispieldatei mit hoch-

Die beiden CMD's, Zeile Löschen, Rest nach unten (Button 34)/ oben (Button 35) verschiebt mir auch den Blattkopf auf den Seiten danach.

Dies sollte so aber nicht sein.

Mein WEITER Button (19) hat aber bereits eine Begrenzung, welche Zeilen bei der Bearbeitung überspringt. Das geht auch- aber eben nur auf der WEITER CMD :boah:


Code:

Private Sub CommandButton19_Click()
Dim z As Long
Dim r As Long

Range(TextBox19.Value) = TextBox17.Value
Range(TextBox15.Value) = TextBox16.Value


' ich kommentiere das mal aus...
'z = Cells(ActiveCell.Row, "A") 'aktuelle Lfd. Nr
'r = ZeilenNr(z + 1) 'zutreffende Zeilen# der nächsten Lfd. Nr
'Cells(r, ActiveCell.Column).Select 'auf nächste Zeile positionieren

' ... weil das so gedacht war:
Cells(ActiveCell.Row, 1).Interior.Color = vbGreen ' erst das Grün
If (ActiveCell.Row Mod 49) <> 0 Then
ActiveCell.Offset(1).Select
Else
ActiveCell.Offset(20).Select
End If


UserForm_Initialize ' das lädt einfach die Variablen nach - wozu eigentlich?
End Sub


Ist es möglich, die Zeilendynamic der Schaltläche "Weiter" in meiner Userform1 auf die beiden

Code:

Private Sub CommandButton34_Click()
Cells(ActiveCell.Row, 2).Resize(1, 13).Delete Shift:=xlUp
End Sub

und

Code:

Private Sub CommandButton35_Click()
Cells(ActiveCell.Row, 2).Resize(1, 13).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub


mit anzuwenden?
Weiß nun nicht wie der Code auch auf den beiden anderen Schaltflächen (34;35) mit Anwendbar ist.

Beginne immer mit Doppel-Klick in die Zelle C 20 und öffne Userform1.

Vielleicht kann wer helfen.



Grüße Andreas

Crazy Tom
01.10.2016, 18:01
Hallo

schau mal ob es so passt

Private Sub CommandButton34_Click()
Dim lngLetzte As Long
Dim lngZeile As Long
lngZeile = ActiveCell.Row
lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
If Cells(ActiveCell.Row + 1, 1).Value = "" _
Or Cells(ActiveCell.Row, 1).Value = "" Then
Cells(ActiveCell.Row, 2).Resize(1, 13).ClearContents
Else
Cells(ActiveCell.Row, 2).Resize(1, 13).Delete Shift:=xlUp
Cells(lngLetzte, 2).Resize(1, 13).Insert Shift:=xlDown
Cells(lngLetzte - 1, 2).Resize(1, 13).Copy
Cells(lngLetzte, 2).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Cells(lngZeile, 3).Select
End If
End Sub

Private Sub CommandButton35_Click()
Dim lngLetzte As Long
If Cells(ActiveCell.Row, 1).Value = "" Then Exit Sub
Cells(ActiveCell.Row, 2).Resize(1, 13).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
Cells(lngLetzte + 1, 2).Resize(1, 13).Delete Shift:=xlUp
End Sub

MfG Tom

Lilalauneandreas
01.10.2016, 22:03
Hallo Tom:) :) :) , danke das Du dir die Arbeit gemacht hast;) . Habe den Code getestet, funktioniert auf alle Fälle. Die Tabelle bleibt zusammen.:rolleyes:

Es wird jetzt beim Ausführen (34 und 35) der Blattkopf nicht mehr verschoben.
Kann man noch folgendes berücksichtigen?

Beispielsweise befinde ich mich in Zelle C78 und betätige die" CMD Zeile Löschen Rest nach oben" dann werden die Zellen B:N nur von der einen Seite bis Zeile 90 nach oben verschoben. Ist es möglich, die weiteren Zeilenbereiche , die Bearbeitet werden dürfen ( Zeile 167-196; 216-245 usw), mit nach oben zu verschieben? Meine Tabellen können bis zu 3000 Zeilen haben.

:entsetzt: Hoffentlich nerv ich nicht so sehr?:entsetzt:

Danke noch mal.
LG Andreas

Crazy Tom
01.10.2016, 22:12
Hallo

tut mir leid, ich verstehe nicht was du meinst

MfG Tom

Lilalauneandreas
02.10.2016, 08:55
Guten Morgen Tom,
ich beschreibe noch mal mein Anliegen. :) Meine Tabellenblätter haben teilweise bis zu 3000 Zeilen. In meiner Beispielmappe allerdings nicht. Es sind auch nicht nur eine- sondern mindestens acht Projekte.
Das muss jedes Jahr aktualisiert werden. Es kommen Geräte hinzu- oder fallen weg.
Die Tabelle1 ist immer so angelegt, das pro A4 Seite ein sichtbarer Blattkopf zu sehen ist. Dieser soll aber bei der automatischen Bearbeitung über die Userform1 übersprungen werden. Die Schaltfläche "WEITER"- die mir meine Datensätze pro Zeile in bestimmte Spalten einträgt- macht das auch:) :) :)

Wenn jetzt Geräte in meiner Tabelle hinzu kommen, wollte ich mit der CMD " Zeile EINFÜGEN und REST nach UNTEN". das der Bereich B:N um eine Zeile nach unten verschoben wird-(macht es nun auch -dank deines Codes:)
Jedoch stehen weitere Geräte auf den nachfolgenden Seiten (A4).
:rolleyes: Diese sollen nun auch im Bereich B:N um eine Zeile nach unten verschoben werden.:rolleyes: Selbständig.

Dazu soll folgender Bereich übersprungen werden soll-

Der Bereich B:N der nicht > nicht Bearbeitet werden soll< ist hier:

Zeile Zeilennummern
1 1 : 19
2 50 : 68
3 99 : 117
4 148 : 166
5 197 : 215
6 246 : 264
7 295 : 313
8 344 : 362
9 393 : 411
10 442 : 460
11 491 : 509
12 540 : 558
13 589 : 607
14 638 : 656
15 687 : 705
16 736 : 754
17 785 : 803
18 834 : 852
19 883 : 901
20 932 : 950
21 981 : 999
22 1030 : 1048
23 1079 : 1097
24 1128 : 1146
25 1177 : 1195
26 1226 : 1244
27 1275 : 1293
28 1324 : 1342
29 1373 : 1391

usw bis Seite 100



Das ist kompliziert, ich weiß- Der Versuch alles Bearbeitbares in eine zweite Tabelle zu Kopieren geht auch- funktioniert, jedoch beim Zurück Kopieren in die Tabelle stoppt das Makro wegen verbundener Zellen. :boah

Danke für die Hilfe.
Grüße Andreas