Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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

Selktion

Selktion
25.08.2008 14:54:58
Kurt
Hallo,
Habe folgendes Makro:

Private Sub CommandButton1_Click()
z = ActiveCell().Select
ActiveSheet.Range(Cells(z, 3), Cells(z, 15)).Select
End Sub


Irgenwie gehts nicht.
Ich möchte, egal wo man steht, eine Bereich selektiert werden soll.
Fest ist immer der Spaltenbereich Spalte3-15.
Um den Zeilenbereich fetszustellen, habe ich in der Spalte3 eine 1
und im nächst möglichen "unterenBereich" eine 2 in der Spalte3 stehen.
gruß kurt

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selktion
25.08.2008 14:57:41
Herbert

Private Sub CommandButton1_Click()
Dim z As Long
z = ActiveCell.Row
ActiveSheet.Range(Cells(z, 3), Cells(z, 15)).Select
End Sub


mfg Herbert

Hallo Herbert da fehlt noch
25.08.2008 15:01:00
Kurt
Hallo Herbert, da fehlt jetzt noch der Bereich nach oben unten unten.
In der oberen Zeile steht in Spalte3 eine 1 in der unteren letzten Zeile in
der Spalte3 eine 2.
gruß Kurt
AW: Suchen und markieren
25.08.2008 17:57:00
Erich
Hi Kurt,
diese Prozedur selektiert in Spalte C von der ersten 1 bis zur ersten 2,
die unterhalb der 1 steht:

Option Explicit
Sub Makro1()
Dim var1, var2  ' (beide als Variant)
var1 = Application.Match(1, Columns(3), 0)
If IsError(var1) Then
' Meldung?
Else
var2 = Application.Match(2, Range(Cells(var1 + 1, 3), Cells(Rows.Count, 3)), 0)
If IsError(var2) Then
' Meldung?
Else
Cells(var1, 3).Resize(var2 + 1).Select
' oder
'        Range(Cells(var1, 3), Cells(var1 + var2, 3)).Select
End If
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Hallo Erich
25.08.2008 18:24:00
Kurt
Hey Erich,
das ist ja richtig Profimäßig.
Der Bereich wird selektiert.
Ich müßte aber dies bis Spalte 15 selektiert haben, kannst Du
mir da noch etwas helfen ?
gr Kurt
AW: bis Spalte 15
25.08.2008 18:31:23
Erich
Hi Kurt,
sorry, das hatte ich übersehen.
Da ändern sich nur die beiden Select-Zeilen in

Cells(var1, 3).Resize(var2 + 1, 13).Select
' oder
'        Range(Cells(var1, 3), Cells(var1 + var2, 15)).Select

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Hallo Erich
25.08.2008 18:38:00
Kurt
Hallo Erich,
jetzt wird nicht der Bereich selektiert, wo ich ich gerade befinde.
Ich habe jetzt überall die 1 u. 2 reingesetzt und die Schrift weiß eingefärbt.
In dem Bereich sollte die Spalte von C bis 15 selektiert werden und dann in der SpalteC
die nächste 1 nach oben und die nächste 2 nach abgesucht werden um dann
den gesamten Bereich zu selektieren.
gr Kurt
Anzeige
AW: Rückfrage
25.08.2008 19:59:20
Erich
Hi Kurt,
anfangs hattest du geschrieben "egal wo man steht" - das war wohl etwas missverständlich.
Es spielt wohl doch eine Rolle, wo die aktive Zelle ist.
So ganz klar ist die Sache noch nicht. Welche "2" ist im folgenden Beispiel wesentlich?
Die "2" in Zeile 5 (unterhalb der 1) oder die in Zeile 9 (unterhalb der aktiven Zelle)?
D.h.: Soll der grüne oder der blaue Bereich selektiert werden (jeweils bis Spalte 15)?
 BCDE
3 1  
4    
5 2  
6aktive Zelle   
7 2  

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Hallo Erich Musterdatei
25.08.2008 20:09:51
Kurt
Hallo Erich,
hier kommt die Musterdatei, wenn ich in jeden Rahmen stehe,
soll der gesamte Bereich selektiert werden.
Habe mich, glaube ich, nicht so verständlich ausgedrückt.
https://www.herber.de/bbs/user/54901.xls
gruß Kurt
AW: Hallo Erich Musterdatei
25.08.2008 20:48:00
Erich
Hi Kurt,
gehe ich recht in der Annahme, dass in meinem Beispiel gar kein Bereich selektiert werden soll,
also weder der grüne noch der blaue?
(Warum hast du meine Frage zu dem Beispiel gar nicht beantwortet?)
Probier mal

Option Explicit
Sub Makro1()
Dim lngA As Long, lngV As Long, lngB As Long
lngA = ActiveCell.Row
Select Case Cells(lngA, 3)
Case "1"
lngV = lngA
lngB = Cells(lngA, 3).End(xlDown).Row
Case "2"
lngB = lngA
lngV = Cells(lngA, 3).End(xlUp).Row
Case ""
lngV = Cells(lngA, 3).End(xlUp).Row
lngB = Cells(lngA, 3).End(xlDown).Row
End Select
If Cells(lngV, 3) = 1 And Cells(lngB, 3) = 2 Then
Range(Cells(lngV, 3), Cells(lngB, 15)).Select
Else
MsgBox "Kein Bereich ausgewählt"
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Habe getestet
25.08.2008 21:16:39
Kurt
Hallo Erich,
leider hast Du RECHT, habe gedacht mit meiner Musterdatei kommst Du
besser zurecht.
In der Musterdatei ist alles ok. aber in meiner Orginal mit zahlen kommt Fehlermeldung,
1004 Anwendungsfehler...
Warum ?
gruß Kurt
AW: neue Version
25.08.2008 22:08:15
Erich
Hi Kurt,
es ist immer noch nicht klar, was wann selektiert werden soll.
Mich beschleicht ein wenig das ungute Gefühl, VBA sollte auch unterscheiden,
ob eine 2 in schwarzer oder roter Schriftfarbe in einer Zelle steht...
Dem ist jetzt nicht so. Auch die Rahmen werden von der Prozedur nicht beachtet.
Probier mal:

Sub Makro1()
Dim lngA As Long, lngV As Long, lngB As Long, varZ
With Application
lngA = ActiveCell.Row
Select Case Cells(lngA, 3)
Case "1"
lngV = lngA
varZ = .Match(2, Range(Cells(lngA + 1, 3), Cells(Rows.Count, 3)), 0)
If Not IsError(varZ) Then lngB = varZ + lngA
Case "2"
lngB = lngA
lngV = Evaluate("=MAX((C1:C" & lngA - 1 & "=1)*ROW(C1:C" & lngA - 1 & "))")
Case Else
varZ = .Match(2, Range(Cells(lngA + 1, 3), Cells(Rows.Count, 3)), 0)
If Not IsError(varZ) Then
lngB = varZ + lngA
lngV = Evaluate("=MAX((C1:C" & lngA - 1 & "=1)*ROW(C1:C" & lngA - 1 & "))")
End If
End Select
If lngV > 0 And lngB > lngV Then
If Cells(lngV, 3) = 1 And Cells(lngB, 3) = 2 Then
Range(Cells(lngV, 3), Cells(lngB, 15)).Select
Else
MsgBox "Kein Bereich ausgewählt"
End If
Else
MsgBox "Kein Bereich ausgewählt"
End If
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Geht doch... DANKE
25.08.2008 22:49:21
Kurt
Hallo Erich,
tausend Dank, das war ja wohl meinerseits ein "Akt".
Danke.
Noch zur Info, wenn man in irgendeiner Zelle des Rahmenbereiches steht,
sollte der gesamt Rahmenbereich selektiert werden.
Vielleicht hast Du MORGEN noch eine Idee ohne das man die Ziffern Schreiben muß ?
Gute Nacht,
herzlichst Kurt
AW: noch ein Versuch
26.08.2008 07:33:00
Erich
Hi Kurt,
heute früh hatte ich noch eine Idee:

Sub Makro1()
Dim lngA As Long, lngV As Long, lngB As Long
lngA = ActiveCell.Row
lngV = Application.Floor(lngA + 2, 12) - 2
lngB = Application.Ceiling(lngA + 4, 12) - 4
If lngV > 0 And lngV 

Das Makro kümmert sich jetzt weder um Zellinhalte noch um Formate (z. B. Rahmen),
sondern geht nur von der aktuellen Zeile aus.
Voraussetzung ist natürlich, dass die "Rahmenbereiche" immer genau 11 Zeilen hoch sind,
sich zwischen den Rahmenbereichen genau eine Zeile befindet
und der erste Bereich in Zeile 10 beginnt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Das ist der Hammer -)
26.08.2008 08:58:00
Kurt
Guten Morgen Erich,
das ist ja der Hammer !!!!!!!!!
Kannst Du mir mal dahinter schreiben was da so passiert ?
DANKE !
Ansonsten schönen Dienstag,
herzlichst Kurt
Was ist ,wenn ich den Bereich ...
26.08.2008 09:15:00
Kurt
Hallo Erich,
habe nur eine kleine Frage.
Was muß ich ändern, wenn ich den 1.Bereich in der Zeile 3 stehen habe ?
Und Oder der Bereich in Spalte B anfängt ?
gruß Kurt
AW: Was ist ,wenn ich den Bereich ...
26.08.2008 11:35:00
Erich
Hi Kurt,
das geht noch etwas einfacher:

Option Explicit
Sub Makro1()
Dim lngA As Long, lngV As Long
Const Zeile1 = 5  ' 1. Zeile des 1. Rahmens
Const Hoehe = 11  ' Höhe eines Rahmens
' Spalten werden in der Select-Zeile mit Buchstaben angegeben.
lngA = ActiveCell.Row
lngV = Application.Floor(lngA + Hoehe + 2 - Zeile1, Hoehe + 1) - Hoehe - 1 + Zeile1
If Zeile1 

In der Mappe habe ich in den Spalten P und Q mal die Formeln hingeschrieben,
die im Fall Höhe = 11, Zeile1 = 5 ausgewertet werden: https://www.herber.de/bbs/user/54920.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Herzlichen Dank -)
26.08.2008 11:42:26
Kurt
Hallo Erich,
das habe ich nicht so Richtig kapiert aber es funktioniert, das ist schon Klasse
wie Du das hinbekommen hast.
Herzlichen Dank !!!
gruß Kurt
AW: noch ein Versuch - korrigiert
26.08.2008 07:44:50
Erich
Hi Kurt,
eine kleine Änderung war noch nötig:

Sub Makro1()
Dim lngA As Long, lngV As Long, lngB As Long
lngA = ActiveCell.Row
lngV = Application.Floor(lngA + 3, 12) - 2
lngB = Application.Ceiling(lngA + 4, 12) - 4
If lngV > 0 And lngV 

(Statt Floor(lngA + 2 steht da jetzt Floor(lngA + 3)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: bitte genauer
25.08.2008 21:32:00
Erich
Hi Kurt,
anhand deiner Musterdatei konnte ich auch nur erahnen, was du möchtest.
Aber da scheine ich es ja jetzt getroffen zu haben. :-)
Nicht erahnen kann ich, warum in deinem Original jetzt ein 1004er kommt.
Ich weiß nun wirklich nicht, was da anders ist als im Muster.
Wenn es einen Fehler gibt, sind ein paar Infos IMMER hilfreich:
Geschrieben hast du die Fehlernummer 1004.
Was fehlt:
In welcher Codezeile tritt der Fehler auf?
Welche Werte haben die Variablen lngA, lngV und lngB ?
Was steht in Spalte C in/über/unter der aktuellen Zeile?
Vielleicht kannst du einen kleinen Ausschnitt deines Originals, in dem der Fehler auftritt, hochladen?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Hallo, habe doch die Musterdatei
25.08.2008 22:01:55
Kurt
Hallo Erich,
habe doch die Musterdatei geschickt.
gruß Kurt
Sorry, "Zeile 7" statt "Zeile 9" (owT)
25.08.2008 20:00:41
Erich
AW: Hallo Herbert da fehlt noch
25.08.2008 17:58:00
Herbert
Hi,
welcher Bereich da gemeint ist, erschließt sich aus deiner Fragestellung nicht.
mfg Herbert
Doch Herbert, hier nochmal der Text:
25.08.2008 18:26:47
Kurt
Hallo Herbert,
habe ich doch geschrieben:
Ich möchte, egal wo man steht, eine Bereich selektiert werden soll.
Fest ist immer der Spaltenbereich Spalte3-15.
Um den Zeilenbereich fetszustellen, habe ich in der Spalte3 eine 1
und im nächst möglichen "unterenBereich" eine 2 in der Spalte3 stehen.
gruß Kurt

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige