Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA markiert nicht richtig

54 views
Skip to first unread message

Jürgen Stadermann

unread,
Jul 3, 2014, 8:47:00 AM7/3/14
to
Hallo und Guten Tag.
Ich bin z.Zt. total ratlos.
Mit folgender Befehlsfolge soll ein Bereich markiert werden,doch die
Markierung schieᅵt zu beiden Seiten, also nach links und nach rechts
ᅵbers ziel hinaus.

Hier der Code:

Zelle.Offset(0, ersterdatumseintrag + 1).Activate
Range(ActiveCell, ActiveCell.Offset(0, letzterdatumseintrag -
3)).Columns().EntireColumn.Select
Range(ActiveCell(), ActiveCell.Offset(0, letzterdatumseintrag -
3)).Columns().EntireColumn.Select
Selection.EntireColumn.Delete

Zelle.Offset(0, ersterdatumseintrag).Activate

Hintergrund/Erlᅵuterung:
Focus steht in Spalte "A"
wird nach Spalte "B" gesetzt und die Zelle (also cells) aktiviert.
Jetzt soll von hier nach rechts bis z.Bsp. 11 Zellen weiter markiert
werden, doch was geschieht:
Es wird nach rechts 15 Zellen markiert (also 4 mehr) und nach links
mindestens 2 markiert (wie viel kann ich nicht erkennen) b.z.w. schieᅵt
die Markierung ᅵbers Ziel hinaus.
wird > Selection.EntireColumn.Delete < ausgefᅵhrt,

kommt danach die Meldung: Objekt erforderlich ,,,, Laufzeitfehler '424'
weil ein bestimmter Datumseintrag jetzt nicht gefunden wurde.

Das Kuriose an der ganzen Geschichte ist:
In einer anderen Arbeitsmappe,
die - abgesehen von ein paar mehr Tabellenzeilen - genau das Selbe
beinhaltet, funktioniert das alles.


Wollte nun heute Nachmittag eine ᅵbergabe machen, aber das wird wohl
nichts.

Mit der Bitte um rasche Hilfe.

Ich arbeite mit Excel 2010 unter Windows 7

Danke schon mal.

Jᅵrgen






















---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com

Claus Busch

unread,
Jul 3, 2014, 9:04:07 AM7/3/14
to
Hallo J�rgen,

Am Thu, 03 Jul 2014 14:47:00 +0200 schrieb J�rgen Stadermann:

> Focus steht in Spalte "A"
> wird nach Spalte "B" gesetzt und die Zelle (also cells) aktiviert.
> Jetzt soll von hier nach rechts bis z.Bsp. 11 Zellen weiter markiert
> werden, doch was geschieht:
> Es wird nach rechts 15 Zellen markiert (also 4 mehr) und nach links
> mindestens 2 markiert (wie viel kann ich nicht erkennen) b.z.w. schie�t
> die Markierung �bers Ziel hinaus.
> wird > Selection.EntireColumn.Delete < ausgef�hrt,

du brauchst kein Select, kein Selection und kein Activate.

Probiere es mal so:

Dim letzterdatumseintrag As Long

letzterdatumseintrag = Cells(ActiveCell.Row, Columns.Count) _
.End(xlToLeft).Column
Range(ActiveCell.Offset(, 1), Cells(ActiveCell.Row, _
letzterdatumseintrag - 3)).EntireColumn.Delete


Mit freundlichen Gr��en
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Claus Busch

unread,
Jul 3, 2014, 9:15:31 AM7/3/14
to
Hallo J�rgen,

Am Thu, 3 Jul 2014 15:04:07 +0200 schrieb Claus Busch:

> Dim letzterdatumseintrag As Long

oder lasse dir von der drittletzten Spalte den Buchstaben ausgeben und
l�sche die Spalten direkt:

Dim letzterdatumseintrag As String

letzterdatumseintrag = Chr(Cells(ActiveCell.Row, Columns.Count) _
.End(xlToLeft).Column - 3 + 64)
Columns("B:" & letzterdatumseintrag).Delete

Jürgen Stadermann

unread,
Jul 3, 2014, 11:49:26 AM7/3/14
to
Am 03.07.2014 15:15, schrieb Claus Busch:
> Hallo J�rgen,
>
> Am Thu, 3 Jul 2014 15:04:07 +0200 schrieb Claus Busch:
>
>> Dim letzterdatumseintrag As Long
>
> oder lasse dir von der drittletzten Spalte den Buchstaben ausgeben und
> l�sche die Spalten direkt:
>
> Dim letzterdatumseintrag As String
>
> letzterdatumseintrag = Chr(Cells(ActiveCell.Row, Columns.Count) _
> .End(xlToLeft).Column - 3 + 64)
> Columns("B:" & letzterdatumseintrag).Delete
>
>
> Mit freundlichen Gr��en
> Claus
>
Hallo Claus,
Danke, f�r deine Antworten; die kann ich immer gebrauchen.
Ich habe den Fehler bei mir gefunden.
In diesen waagerechten Bereich sind verbundene Zellen enthalten.
Also der Inhalt von z.Bsp. "A100" ist auf mittig zentriert mit "A101 bis
z.Bsp, "K101"

Habe diese Verbindung per Hand aufgehoben, dann klappt es .
So, stellt sich nat�rlich die Frage: Wie bekomme ich diese Verbindung am
Beginn eines Codedurchlaufs weg also wie steuere ich diesen Zellbereich
vorher an und setze ihn nachher wieder.
Bin z.Zt. am gogeln.
Den Code f�r die Zellverbindung habe ich per Makrorecorder ermittelt.
3 Zeilen der With-funktion kann ich offensichtlich l�schen.
Ist ja wieder viel Zeilenkram.

Gru�
J�rgen

Claus Busch

unread,
Jul 3, 2014, 12:04:38 PM7/3/14
to
Hallo J�rgen,

Am Thu, 03 Jul 2014 17:49:26 +0200 schrieb J�rgen Stadermann:

> Habe diese Verbindung per Hand aufgehoben, dann klappt es .
> So, stellt sich nat�rlich die Frage: Wie bekomme ich diese Verbindung am
> Beginn eines Codedurchlaufs weg also wie steuere ich diesen Zellbereich
> vorher an und setze ihn nachher wieder.

probiere mal so:

Sub Test()
Dim ma As Range
Dim rngC As Range
Dim LCol As Long

With ActiveSheet
LCol = .Cells(ActiveCell.Row, Columns.Count).End(xlUp).Column
For Each rngC In .Range(.Cells(ActiveCell.Row, 2), _
.Cells(ActiveCell.Row, LCol))
If rngC.MergeCells = True Then
Set ma = rngC.MergeArea
ma.UnMerge
End If
Next
End With

End Sub


Mit freundlichen Gr��en
Claus
0 new messages