Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
564to568
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
564to568
564to568
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereich markieren

Bereich markieren
13.02.2005 17:24:57
Gerhard
Hallo
Wie kann ich via VBA:
1. Einen Bereich in einer Spalte von der aktiven Zelle bis zur ersten Leezelle markieren?
Beispiel: Die Spalte B ist gefüllt mit Werten von B2 bis B1000 und in der Zelle B100 ist die erste Leerzelle und der Cursor steht z.B in Zelle B5, dann soll von B5 bis B99 die Spalte markiert sein!!!
2. Einen Bereich über mehrere Spalten und Zeilen von aktiver Zelle bis zur ersten Leerzelle?
Beispiel: Die Spalten B2 bis Spalte F2 sind gefüllt mit Werten über 1000 Zeilen
Die erste Leerzelle befindet sich in Zelle F100 und der Cirsor steht in
Zelle B2, dann soll der Bereich von B2 bis F99 markiert werden!!!
Vielen Dank für Eure Hilfe
Gerhard

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich markieren
Gnöttgen
Zu welchem Zweck sollen die Zellen markiert werden?
Gnöttgen
AW: Bereich markieren
Gerhard
Hallo
um diese markierten Bereiche via VBA dann in ein neues Blatt zu kopieren sowie diese Bereiche mit einem Rahmen zu umgeben
Gruß
Gerhard
AW: Bereich markieren
Gnöttgen
Für beides ist es nicht nötig, die Bereiche zu markieren.
Gnöttgen
AW: Bereich markieren
Reinhard
Hi Gnöttgen,
wohin (welcher Bereich) in das neue Blatt sollen die kopiert werden?
Sollen sie an bestehende Werte angehängt werden oder diese gelöscht werden?
Usw.
Gruß
Reinhard
AW: Bereich markieren
Gerhard
Hallo
Den via VBA ermittelten Bereich bis zur ersten Leerzelle in einer Spalte von z.B B2 bis B99 kann aber auch je nach Teileausschuß von z.B. B2 bis B500 liegen..., möchte ich mit einem roten Rahmen ebenfalls via VBA sowie in das Blatt "Seriennummern_gesamt" in Anschluß an bereits übertragene Nummern in die Spalte B übernehmen.
Bemerkung: Bei unterem Makro wird leider die gesamte Spalte bis Ende markiert und nicht bis zur ersten Leerzelle!!!!!

Sub Markieren_von_aktiver_bis_ende()
Dim intRow As Integer
intRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
Range(ActiveCell, Cells(intRow, ActiveCell.Column)).Select
End Sub

2. Bereich über mehrere Spalten: Beispiel
Ebenfalls via VBA von z.B B2 bis F120 (in dieser Zeile F120 kommt die erste Leerzelle vor) Diesen Bereich möchte ich ebenfalls in das Blatt"Produktion_gesamt" in Anschluß an bereits vorhanden Daten kopieren, sowie den markierten Bereich mit einem roten Rahmen versehen.
Anzeige
zu 1
Reinhard
Hi Gnöttgen,
über Ansicht--Symbolleisten---Steuerelement erzeuge einen CommandButton.
Dem weist du folgenden Code zu:

Private Sub CommandButton1_Click()
Set wksZ = Worksheets("Seriennummern_gesamt")
'Set wksZ = Worksheets("Tabelle2")
With wksZ
If ActiveCell.Column <> 2 Then GoTo Ende 'nix machen wenn nicht in Spalte B
letzteQ = IIf(Range("B65536") <> "", 65536, Range("B65536").End(xlUp).Row)
letzteZ = IIf(wksZ.Range("B65536") <> "", 65536, wksZ.Range("B65536").End(xlUp).Row)
von = ActiveCell.Row
If von > letzteQ Then GoTo Ende
bis = ActiveCell.End(xlDown).Row
Range("B" & von & ":B" & bis).Copy Destination:=wksZ.Range("B" & letzteZ + 1)
End With
Ende:
ActiveCell.Select
Set wksZ = Nothing
End Sub

Wenn er funktioniert, bauen wir daraus was zu 2.
Gruß
Reinhard
Anzeige
AW: zu 1
GerdW
Hi,
enttäuschend, in den paar Zeilen Code 2 Goto, und das von dir!
mfg Gerd
AW: zu 1
Gerhard
Hallo Reinhard
Super... genau so wollte ich es mit einer Spalte!
nur dieser Bereich sollte in dem aktuellen Blatt noch mit einem roten Rahmen markiert werden!
Genau so sollte dann das Makro funktionieren über mehrere Spalten...
Vielen Dank
Gerhard
AW: zu 1
Reinhard
Hi Gerhard,
im Code ist noch ein Logik/Denk-Fehler drinnen, muss jetzt grad weg, korrigier ich später.
Gruß
Reinhard
AW: zu 1
Reinhard
Hi gerhard,
habe jetzt den Code korrigiert, es gab Fehler wenn man direkt über einer leeren zelle stand.
Nicht behandelt wird, wenn in der Zieltabelle Spalte B zu voll wird (>65536 Zeilen) oder wenn man in einer leeren Zelle in B steht.
Option Explicit
Private Sub CommandButton1_Click()
Dim wksZ As Worksheet, letzteQ As Long, letzteZ As Long 'Q=Quelle,Z=Ziel
Dim Von As Long, Bis As Long
Set wksZ = Worksheets("Seriennummern_gesamt")
'Set wksZ = Worksheets("Tabelle2")
With wksZ
letzteQ = IIf(Range("B65536") <> "", 65536, Range("B65536").End(xlUp).Row)
letzteZ = IIf(wksZ.Range("B65536") <> "", 65536, wksZ.Range("B65536").End(xlUp).Row)
Von = ActiveCell.Row
Bis = IIf(ActiveCell.Offset(1, 0) = "", Von, ActiveCell.End(xlDown).Row)
If ActiveCell.Column = 2 And Von <= letzteQ Then
Range("B" & Von & ":B" & Bis).Copy Destination:=wksZ.Range("B" & letzteZ + 1)
End If
End With
ActiveCell.Select 'keine Ahnung warum .copy die Selektion aufhebt
Set wksZ = Nothing
End Sub

Gruß
Reinhrad
Anzeige
1 mit Rahmen
Reinhard
Hi Gerhard,

Option Explicit
Private Sub CommandButton1_Click()
Dim wksZ As Worksheet, letzteQ As Long, letzteZ As Long 'Q=Quelle,Z=Ziel
Dim Von As Long, Bis As Long, N As Byte
Set wksZ = Worksheets("Seriennummern_gesamt")
'Set wksZ = Worksheets("Tabelle2")
With wksZ
letzteQ = IIf(Range("B65536") <> "", 65536, Range("B65536").End(xlUp).Row)
letzteZ = IIf(wksZ.Range("B65536") <> "", 65536, wksZ.Range("B65536").End(xlUp).Row)
Von = ActiveCell.Row
Bis = IIf(ActiveCell.Offset(1, 0) = "", Von, ActiveCell.End(xlDown).Row)
If ActiveCell.Column = 2 And Von <= letzteQ Then
With Range("B" & Von & ":B" & Bis)
.Copy Destination:=wksZ.Range("B" & letzteZ + 1)
For N = 7 To 10
.Borders(N).LineStyle = xlContinuous
.Borders(N).Weight = xlThin
.Borders(N).ColorIndex = 3
Next N
End With
End If
End With
ActiveCell.Select 'keine Ahnung warum .copy die Selektion aufhebt
Set wksZ = Nothing
End Sub

Gruß
Reinhard
Anzeige
zu 2
Reinhard
Hi Gerhard,

Private Sub CommandButton2_Click()
Dim wksZ As Worksheet, letzteQ As Long, letzteZ As Long 'Q=Quelle,Z=Ziel
Dim Von As Long, Bis As Long, N As Byte
'Set wksZ = Worksheets("Produktion_gesamt")
Set wksZ = Worksheets("Tabelle3")
With wksZ
letzteQ = IIf(Range("B65536") <> "", 65536, Range("B65536").End(xlUp).Row)
letzteZ = IIf(wksZ.Range("B65536") <> "", 65536, wksZ.Range("B65536").End(xlUp).Row)
Von = ActiveCell.Row
Bis = IIf(ActiveCell.Offset(1, 0) = "", Von, ActiveCell.End(xlDown).Row)
If ActiveCell.Column >= 2 And ActiveCell.Column <= 6 And Von <= letzteQ Then
With Range("B" & Von & ":F" & Bis)
.Copy Destination:=wksZ.Range("B" & letzteZ + 1)
For N = 7 To 10
.Borders(N).LineStyle = xlContinuous
.Borders(N).Weight = xlThin
.Borders(N).ColorIndex = 3
Next N
End With
End If
End With
ActiveCell.Select 'keine Ahnung warum .copy die Selektion aufhebt
Set wksZ = Nothing
End Sub
Gruß
Reinhard
Anzeige
AW: zu 2
Gerhard
Hallo Reinhard
Vielen Dank für Deine Hilfe
es funktioniert soweit.
nur 2 Dinge die man noch verbessern könnte:
1. beim kopieren in die Gesamtübersicht wird der rote Rahmen mitkopiert!
2. Jetzt wird über den ermitteln Bereich ein roter Rahmen gelegt. Ist es möglich auch die Zellen die innerhalb dieses Rahmens liegen mit Linien zu versehen?
So wie bei der normalen Excelfunktionen: Zellen markien, Rahmen, Außen und Innen!
Gruß
Gerhard

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige