Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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
Inhaltsverzeichnis

VBA Bearbeitungsbereich defininieren

VBA Bearbeitungsbereich defininieren
27.09.2016 19:35:03
Andreas
Hallo- Excelexperten!
Nun mein Projekt nimmt Gestallt an. Dank den Unterstützern dieses Forums.
Da ich aber nicht wusste, das beim Kopieren und Einfügen von Zeilen die Zellen nicht Verbunden sein dürfen- suche ich nach einer anderen Lösung für folgendes Vorhaben.
Meine Befehlsschaltläche "weiter" in meiner Userform trägt alle Daten ein, schließt sich, springt zur nächsten Zeile nach unten und öffnet sich wieder. Das geht wunderbar.
Nun bräuchte ich aber ein Makro für das Aktivieren eines festgelegten aber nicht zusammenhängenden Bereich, der Bearbeitet werden darf.
Also Click- und folgender Bereich darf bearbeitet werden:
Beginn bei Zeile 20 und Endet bei Zeile 49.
Der nächste Bereich beginnt bei Zeile 69 und endet bei Zeile 98.
Also kurz gesagt es dürfen die Zeilen 1-19 nein/Start bei 20-49 ja/ 50-68 nein/Start bei 69-98 ja usw. bis zur Zeile 5000 bearbeitet werden.
Ich hatte schon mal einen Bereich Versuchshalber ausgeblendet, jedoch hat meine WEITER Funktion auch diese ausgeblendeten Zellen mit bedient.
Kann jemand helfen?
Währe nicht schlecht wenn man da ein Makro zusammenbasteln kann. Gern auch mit Kommentare, das ich auch etwas nachvollziehen kann.
Danke Andreas D:

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Bearbeitungsbereich defininieren
28.09.2016 21:33:44
Michael
Hi,
versuch mal ne Konstruktion mit MOD (als Excel-Formel: = REST), etwa so:
Option Explicit
Sub test()
Dim i&
i = 19
Do
If (i Mod 49)  1 Then
Range("A" & i).Interior.Color = vbYellow
i = i + 1
Else
i = i + 19
End If
Loop While i 
Schöne Grüße,
Michael
AW: VBA Bearbeitungsbereich defininieren
28.09.2016 22:33:53
D
Danke Michael,
Code getestet- und alle Zellen, die bearbeitet werden dürfen sind nun gelb. Interessanter Code. Wäre eine Option- z.B. nun zu sagen, meine CMD WEITER Befehlsschaltfläche darf nur die nun gelben ZEILEN! Anlaufen dürfen? Dein Code jedenfalls hat alle meine gewünschten Zeilen in der Tabelle bis zur Zeile 500 erst mal markiert. Ein wirklich guter neuer Ansatz. Wenn das gehen würde- dann kann ich am Schluß ja die gelbe Markierung wieder entfernen.
Vieleicht kann noch jemand helfen.
Danke erst mal.
Gruß Andreas
Anzeige
AW: VBA Bearbeitungsbereich defininieren
28.09.2016 23:19:32
D
Wirklich ne geniale IDEE- Michael,
Da denke ich schon weiter- weil dann macht die Sache Spaß- wenn Fortschritte zu verzeichnen sind-
noch einen Code- der- wenn ich meine CMD WEITER Befehlsschaltfläche bedient habe, das die gelbe markierung grün wird.
Das darf aber nur die aktuelle Zeile betreffen.
Würde für mich bedeuten- ist Bearbeitet und fertig.
Vieleicht noch eine weitere CMD Abschnitt OK , die alle gelben und grünen Zellen in der Spalte A aufwärts wieder Farblos macht. Würde für mich Bedeuten ganz fertig- Aber eben Abschnittsweise, da ich von oben nach unten mich durcharbeiten muß.
Also das wäre Genial. Freue mich über jeden VBA Schnipsel- so kann ich mir das zusammenstellen und vor allem etwas lernen- freu!
Grüße Andreas D.
Anzeige
AW: VBA Bearbeitungsbereich defininieren
29.09.2016 15:38:34
Michael
Hi Andi,
tja, man kann da alles mögliche einbauen, aber solange ich weder eine Datei von Dir habe noch überhaupt irgendeinen Codeschnipsel, weiß ich effektiv nicht, wie ich Dir helfen könnte.
Das Einfärben war halt nur für die Illustration der Logik: mit dem gleichen Code kannst Du im Prinzip die nächste, "gute" Zeile mit Deinem "Weiter" anspringen, solltest Du Dich gerade in der letzten "Guten" eines Blocks befinden.
Schöne Grüße,
Michael
AW: VBA Bearbeitungsbereich defininieren
29.09.2016 18:51:06
Andreas
Hallo Michael,
danke für die Hilfe- nun habe ich mal noch eine Datei hochgeladen- aber bitte nicht lachen. Ist alles noch am Anfang- aber es nimmt Gestallt an. https://www.herber.de/bbs/user/108511.zip
In Tabelle1 Doppelklick auf C21 oder C25 egal- mus nur eben C sein. Dann Userform1 öffnen und - gelbe Schaltfäche von Dir- geht- , meine grüne " Weiter" geht auch- und springt nun auch am Ende der ersten Seite weiter in die Seite zwei. geht wunderbar.
Würde jetzt gern die bearbeitete Zeile, wenn auf "Weiter" geklickt wurde, die Farbe grün annimmt.
Welchen Farbcode muß ich eintragen, wenn die Zellen wieder farblos werden sollen?
Danke für die Hilfe.
LG Andreas D.
Anzeige
VBA Bearbeitungsbereich defininieren
30.09.2016 00:47:18
Michael
Hi,
lustiges Teil...
"Keine Farbe" geht am einfachsten mit =xlnone:
Sub weiß_für_Fertig()
Dim i&
i = 19
Do
If (i Mod 49)  1 Then
Range("A" & i).Interior.Color = xlNone
i = i + 1
Else
i = i + 19
End If
Loop While i 

wobei das bei 5000 Zellen EINZELN "ewig" dauert; zumindest das "Weißen" geht in der ganzen Spalte:
Sub weiß_für_Fertig()
Range("A:A").Interior.Color = xlNone
End Sub
Das mit dem Weiterspringen läßt sich viel "direkter" machen (hier incl. Grün):
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:
ActiveCell.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
' ich kommentiere das mal aus...
' Unload Me
' UserForm1.Show
' ... weil das viel schneller läuft
UserForm_Initialize ' das lädt einfach die Variablen nach - wozu eigentlich?
End Sub
Viel Spaß beim Basteln & LG,
Michael
Anzeige
P.S.: Code-Wartung = Namensvergabe
30.09.2016 00:54:43
Michael
Hi,
je mehr TBen bzw. CBen usw. Du verwendest, desto leichter überblickst Du die Sache, wenn Du Namen verwendest, die zumindest a bissala was aussagen.
Hatte gerade hier: https://www.herber.de/forum/messages/1516706.html
was dazu geschrieben.
Das gilt (in Deinem Fall) auch für Module: denen kannst Du hier auch "sprechende" Namen verpassen, z.B. "Datenschaufeln" oder "BereicheFärben".
Das nur der Vollständigkeit halber.
Gruß,
M.
AW: VBA Bearbeitungsbereich defininieren
30.09.2016 05:40:36
Andreas
Danke Michael,
Super Hilfe- nun bleibt die Userform auch geöffnet und ich kann weiter bearbeiten- und was durch ist, wird grün.
Danke für die Hilfe.
Grüße Andreas
Anzeige
very nice! Danke für die Rückmeldung,
30.09.2016 17:05:04
Michael
Andi,
& schöne Grüße,
Michael
AW: very nice! Danke für die Rückmeldung,
30.09.2016 19:04:08
Andreas
Hallo Michael,
würde es auch gehen, das anstatt der Zelle C die nach erfolgter Überarbeitung grün wird, die Zelle A in der jeweiligen Zeile grün wird. Wollte den Code ändern, jedoch bezieht er sich auf die active Zelle. Alldings ist es ja immer 2 Spalten vor der activen Zelle.
Liebe Grüße Andreas
AW: very nice! Danke für die Rückmeldung,
30.09.2016 19:24:34
Andreas
Ist auch ein Doppelclick in einer "Spalte C der Tabelle1" für das Öffnen der Userform1 möglich?- Wie und wo muss ich da einen Code einfügen?
Danke für die Hilfe
Grüße Andreas
AW: very nice! Danke für die Rückmeldung,
01.10.2016 13:51:54
Michael
Hi Andi,
schau Dir in der Hilfestellung mal .Offset an: damit kannst Du die "Aktionen" auf die Zelle "verschieben".
Vorexerziert habe ich das mit dem Zeilensprung mit .Offset(1) bzw. (20), aber es geht nicht nur zeilenweise, sondern auch spaltenweise, sogar mit negativen Zahlen.
Wenn Du NUR die Spalte von C auf A "ändern" willst, also zwei Spalten nach links, schreibst Du

activecell.offset(,-2).interior.color = vbLilaBlaßBlau

Das Komma vor der Angabe signalisiert VBA, daß der erste Parameter (für die Zeile) nicht geändert wird.
Und 2.: das Ding in Tabelle1 kopieren:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then UserForm1.Show vbModal: Cancel = True
End Sub
Schöne Grüße,
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige