online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon macmac vom 20.11.2020, 16:18 Options

[VBA] Wie selektiert man den umliegenden Bereich eines bereits selektierten Bereichs?

Hi

Erstmal einen Gruß an alle. Bin neu hier und habe mich eben angemeldet.

Ich habe folgendes Problem.
Im Excel habe ich mit ActiveSheet.UsedRange.Select den verwendeten Bereich in einem Sheet ermittelt. Wie kann ich jetzt zur weiteren Verarbeitung die zellen UM diesem UsedRange selektieren?

Ich möchte nämlich die Höhe und Breite der Zellen UM einer bestimmten Range mit 8px festlegen (zwecks automatisierter Formatierung).

Wäre nett, wenn mir jemand helfen bzw. Anhaltspunkte geben könnte.

Vielen Dank


Antwort schreiben

Antwort 1 von Kauz vom 21.11.2020, 21:15 Options

Hallo macmac...
Mit <ActiveSheet.UsedRange.Select> hast Du einen Bereich markiert, aber nicht ermittelt... würde ich sagen.
Ermittelt heißt für mich, Anfang und Ende liegen mir in Form von Werten vor, mit denen man dann im VBA weiter arbeiten kann.

Um die linke Obere Ecke zu bestimmen könnte das so aussehen:

' Anfang links oben
  ZeileOben = ActiveSheet.UsedRange.Row '        oberste belegte Zelle
  SpalteLinks = ActiveSheet.UsedRange.Column '     Erste belegte Zelle von links

Zum Ermitteln der rechten unteren Zelle müßte ich eine Schleife verwenden... einen Code, der das direkt ausgibt kenne ich nicht.

Vielleicht weiß aber ein anderer da was Geeignetes.

Noch ein Hinweis:
Der Select- und Activate-Befehl sollte vermieden werden.
Eine Alternative sehe z.B. Für eine einzelne Zelle so aus:
Application.GoTo reference:=ActiveSheet.Cells(1, 1), Scroll:=True

Für einen Bereich:
Application.GoTo reference:=ActiveSheet.Range("A1:D10"), Scroll:=False


Hoffe, es hilft schon mal ein wenig...
Gruß
Andreas

Antwort 2 von nighty vom 21.11.2020, 22:11 Options

hi all :-)

damit duerfte einiges machbar sein,dann tueftel mal schoen :-))
was waere denn der grund solch einer negativselection,das gar nicht gut fuer den speicher :-(

gruss nighty

Sub SelectionenPos()
Dim bereich As Range
Dim ZeilenAnzahl As Long
Dim SpaltenAnzahl As Long
Dim StartR As Long
Dim StartC As Long
Set bereich = Selection
StartR = ActiveCell.Row
StartC = ActiveCell.Column
ZeilenAnzahl = bereich.Rows.Count
SpaltenAnzahl = bereich.Count / ZeilenAnzahl
End Sub


Sub makro01()
Rem letzte zeile eines sheets
a = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rem letze spalte eines sheets
b = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
Rem letzte zeile einer spalte
c = ActiveSheet.Range("D" & Rows.Count).End(xlUp).Row
Rem letzte spalte einer zeile
d = ActiveSheet.Range("3:3").End(xlToRight).Column
End Sub

Antwort 3 von nighty vom 21.11.2020, 22:18 Options

hi all :-)

bei excel 2000 hatte ich es nicht geschafft in einem rutsch negativ zu selectieren,daher wuerde ich vorschlagen die x wie y achsen zu trennen und zu selectieren

*arghhh wo ich doch selectionen nicht mag grummel*

alle welt baut selectionen ab und du wahrscheinlich wieder auf ^^

gruss nighty

Antwort 4 von macmac vom 24.11.2020, 08:59 Options

Hi *.*

Danke für die Antworten.
Irgendwie werde ich dadurch nicht schlau (werde es aber gleich mal versuchen).

Was ich machen möchte:
Ich möchte über eine Toolbar (Button) dem Nutzer ermöglichen, eine Tabelle zu markieren, und um diese Tabelle dann einen Rahmen zu basteln. Dieser Rahmen beträgt eine Dicke von 8px (vorgeschrieben). Also erreiche ich das mit der Formatierung der Zellen drumrum.

Das soll irgendwie automatisiert werden, d.h.
1. Markiere die Werte, z.B. die Tabelle
2. Klicke Knopf
3. Schon habe ich zellen um meine Tabelle, die 8px hoch sind (waagrecht) und 8px breit sind (senkrecht).


Hoffe, es wird dadurch plausibler. Bin für weitere Vorschläge sehr dankbar.

Antwort 5 von macmac vom 24.11.2020, 09:08 Options

Ach noch was:
Die Werte müssen m.E. nicht ermittelt werden, da ich davon ausgehen muss, dass der benutzer die Werte/Tabelle händisch markiert.

Antwort 6 von nighty vom 24.11.2020, 09:12 Options

hi macmac :-)

vielleicht ist es ja noch zu frueh fuer mich *gaehn streck*

daher schick mir eine mustertabelle mit beispiel zum besseren verstaendnis :-)

gruss nighty

oberley@t-online.de mit aussagefaehigen betreff bitte

Antwort 7 von Kauz vom 24.11.2020, 15:20 Options

Hallo macmac...

wenn man nur einen Rahmen als Linie haben möchte, so ist eine weitere Ermittlung nicht notwendig.

Wenn aber die benachbarten Zellen in Ihrer Größe verändert werden sollen, so sieht das schon anders aus:

Dann müssen per code die Zellen 'markiert' werden , um sie zu verändern.
Aus diesem Grund braucht man im Code die 'Eckdaten' des markierten Bereichs.

Kann vielleicht heute Abend mal was probieren...

Gruß
Andreas

Antwort 8 von Kauz vom 24.11.2020, 16:58 Options

Hallo...
@MacMac:
Hier ein Codebeispiel für eine Schaltfläche:
Der Bereich wird durch Zellen mit Inhalt automatisch bestimmt.
Private Sub CommandButton1_Click()
  Dim bereich As Range
  Dim ZeilenAnzahl As Long
  Dim SpaltenAnzahl As Long
  Dim StartR As Long
  Dim StartC As Long
  ActiveSheet.UsedRange.Select
  StartR = ActiveCell.Row
  StartC = ActiveCell.Column
  ZeilenAnzahl = ActiveSheet.UsedRange.Rows.Count
  SpaltenAnzahl = ActiveSheet.UsedRange.Count / ZeilenAnzahl
' Zeile oberhalb der Markierung
  ActiveSheet.Rows(StartR - 1).RowHeight = 8
' Zeile unterhalb der Markierung
  ActiveSheet.Rows(StartR + ZeilenAnzahl).RowHeight = 8
' Spalte links der Markierung
  ActiveSheet.Columns(StartC - 1).ColumnWidth = 1
' Spalte rechts der Markierung
  ActiveSheet.Columns(StartC + SpaltenAnzahl).ColumnWidth = 1
End Sub


Um eine Zeile gleich hoch zu bekommen wie eine Spalte breit, bedarf es unterschiedlicher Werte....
deshalb einmal die 8 für Zeilenhöhe und die 1 für Spaltenbreite.

@nighty:
Ich hab mich dabei Deines Code's bedient....
hoffe es ist Dir nicht Unrecht....
Auf das Schlüsselwort <Count> bin ich bei meiner ersten Antwort nicht gekommen.

Gruß
Andreas

Antwort 9 von nighty vom 24.11.2020, 17:13 Options

hi andreas :-)

dafuer ist doch ein forum gedacht ,zwecks verbreitung von infos,ich liebe es wenn daraus neue ideen entstehen :-))

wenn ich auch nur selten dazu beitragen kann :-)

gruss nighty

Antwort 10 von Kauz vom 24.11.2020, 18:01 Options

Hi nighty...
nu schmeiss Dich mal nicht zu weit weg :-)..

so wenig ist es nu auch wieder nich, was Du hier beiträgst!

Gruß
Andreas

Ähnliche Themen

VBA - erste leere Zelle in einem Bereich
Tomschi  30.01.2008 - 52 Hits - 6 Antworten

Feststellen ob Datei bereits exestiert
Saarbauer  16.02.2008 - 23 Hits - 2 Antworten

VBA Bereich mit Datum
fedjo  12.07.2008 - 56 Hits - 2 Antworten

Eckpunkte eines markierten Bereichs(VBA)
Kauz  28.08.2008 - 6 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 16:59:01 2026