Bereich markieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Bereich markieren von: Gerhard
Geschrieben am: 13.02.2005 17:24:57

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

Bild


Betrifft: AW: Bereich markieren von: Gnöttgen
Geschrieben am: 13.02.2005 17:37:23

Zu welchem Zweck sollen die Zellen markiert werden?

Gnöttgen


Bild


Betrifft: AW: Bereich markieren von: Gerhard
Geschrieben am: 13.02.2005 18:00:18

Hallo
um diese markierten Bereiche via VBA dann in ein neues Blatt zu kopieren sowie diese Bereiche mit einem Rahmen zu umgeben
Gruß
Gerhard


Bild


Betrifft: AW: Bereich markieren von: Gnöttgen
Geschrieben am: 13.02.2005 18:01:35

Für beides ist es nicht nötig, die Bereiche zu markieren.

Gnöttgen


Bild


Betrifft: AW: Bereich markieren von: Reinhard
Geschrieben am: 13.02.2005 18:19:38

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


Bild


Betrifft: AW: Bereich markieren von: Gerhard
Geschrieben am: 13.02.2005 19:01:01

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.


Bild


Betrifft: zu 1 von: Reinhard
Geschrieben am: 13.02.2005 19:27:06

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


Bild


Betrifft: AW: zu 1 von: GerdW
Geschrieben am: 13.02.2005 19:38:22

Hi,

enttäuschend, in den paar Zeilen Code 2 Goto, und das von dir!

mfg Gerd


Bild


Betrifft: AW: zu 1 von: Gerhard
Geschrieben am: 13.02.2005 20:05:12

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


Bild


Betrifft: AW: zu 1 von: Reinhard
Geschrieben am: 13.02.2005 19:59:17

Hi Gerhard,
im Code ist noch ein Logik/Denk-Fehler drinnen, muss jetzt grad weg, korrigier ich später.
Gruß
Reinhard


Bild


Betrifft: AW: zu 1 von: Reinhard
Geschrieben am: 13.02.2005 23:08:31

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


Bild


Betrifft: 1 mit Rahmen von: Reinhard
Geschrieben am: 13.02.2005 23:18:57

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


Bild


Betrifft: zu 2 von: Reinhard
Geschrieben am: 13.02.2005 23:30:08

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


Bild


Betrifft: AW: zu 2 von: Gerhard
Geschrieben am: 14.02.2005 16:23:34

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


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bereich markieren"