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

Makro steigt aus

Makro steigt aus
14.02.2008 18:58:06
Klaus
Hallo liebe Leute,
ich habe folgendes Problem: über ein mit dem Recorder aufgezeichnetes Makro lasse ich den Wert einer Zelle in der gesammten Arbeitsmappe suchen und dann mit einigen anderen Werten aus der Zeile weiterarbeiten. Das funktioniert auch, solange es diesen Wert in der Arbeitsmappe nochmal gibt. Gibt es ihn nicht, steigt mir das Makro mit einer Fehlermeldung aus. Es soll aber in der Form weiterlaufen, dass es in die Zelle zurückgeht, in der es gestartet ist. Muß wohl irgendwie mit if-then-else funktionieren, kriege es aber einfach nicht hin. Habe unten einen Teil des Makros aufgeführt, irgendwo da müsste wohl die Lösung eingebaut werden.
Schon mal vielen Dank für eure Bemühungen
Sheets(1).Select
Cells.Find(What:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Sheets(2).Select
Cells.FindNext(After:=ActiveCell).Activate
Sheets(1).Select
ActiveCell.Offset(0, -18).Range("A1:E1").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Selection.Copy
Sheets(2).Select
ActiveCell.Offset(0, -18).Range("A1").Select

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro steigt aus
14.02.2008 19:25:00
Worti
Hallo Klaus,
beschreib mal, was du machen möchtest, dan kann ich vielleicht helfen.
Gruß Worti

AW: Makro steigt aus
14.02.2008 20:01:02
Klaus
Hallo Worti,
ich habe einen Wert in Sheet 1 (der Inhalt der aktiven Zelle) und möchte wissen, ob es diesen Wert nochmal in Sheet 2 gibt. Wenn ja dann sollen andere Werte aus der Zeile in Sheet 1 in die Zeile der aktiven Zelle von Sheet 2 übernommen / kopiert werden.
Wenn der Wert aus der aktiven Zelle in Sheet 1, in Sheet 2 nicht existiert, soll in Sheet 1 eine Zelle nach untengegangen werden und mit dieser Zelle die gleiche Prozedur wiederholt werden.
Ich hoffe das ist jetzt nicht zu verwirrend.

Anzeige
AW: Makro steigt aus
14.02.2008 20:29:00
Worti
Hallo Klaus,
meinst du so etwas:

Sub KlausBergmann()
Dim rngC1 As Range, rngC2 As Range
Dim rngSuchbereich As Range
Set rngSuchbereich = Sheets(2).Cells
Sheets(1).Select
For Each rngC1 In Range(ActiveCell, ActiveCell.Offset(1, 0))
Set rngC2 = rngSuchbereich.Find(rngC1, , , xlWhole)
If Not rngC2 Is Nothing Then
'wenn gefunden, Kopieren von Spalte A bis E aus Suchwertzeile
Sheets(1).Range(Cells(rngC1.Row, 1), Cells(rngC1.Row, 5)).Copy _
Destination:=Sheets(2).Range("A" & rngC2.Row)
End If
Next rngC1
End Sub


Gruß Worti

Anzeige
AW: Makro steigt aus
14.02.2008 21:25:00
Klaus
Hallo Worti,
wie gesagt meine VBA-Kenntnisse sind eher grottenschlecht. Somit kann ich nicht wirklich nachvollziehen was in deiner Prozedur passiert
Ich habe deinen Vorschlag kopiert und ausprobiert, aber irgendwie passiert nichts. Das Makro läuft zwar durch, aber ohne Wirkung auf die Sheets.
Vielleicht hast Du ja noch eine Idee. Vielleicht kannst Du dir mal den Vorschlag von Boris anschauen. Irgendwie habe ich das Gefühl hier fehlt nur eine Kleinigkeit.
Vielen Dank für deine Mühen.

AW: Makro steigt aus
14.02.2008 21:44:00
Klaus
Sorry Worti,
es passiert sehr wohl etwas, nämlich genau das richtige, ich hab's nur nicht gemerkt.
Es passiert zwar noch nicht alles was ich möchte, aber ich glaube mit ein bisschen Zeit bekomme ich den Rest hin.
Vielen Dank! Ich bin einen grossen Schritt weiter.

Anzeige
AW: Makro steigt aus
14.02.2008 20:20:46
{Boris}
Hi Klaus,
Du kannst nichts aktivieren, was nicht vorhanden ist - daher der Fehler. Aus der Hand (nicht optimiert):
Dim C As Range
Sheets(1).Select
Set C = Cells.Find(What:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not C Is Nothing Then
C.Activate
Else
MsgBox "Suchwert nicht vorhanden. Was tun?", ,"Gebe bekannt..."
Exit Sub
End If

Das gleiche Prinzip für den weiteren Codeverlauf.
Grüße Boris

AW: Makro steigt aus
14.02.2008 21:18:00
Klaus
Hallo Boris,
erst mal vielen Dank für die Logik (was es nicht gibt kann man nicht aktivieren)
Ich hab's nicht ganz richtig erklärt. Der Wert aus der aktiven Zelle in Sheet 1 soll in sheet 2 gesucht und falls vorhanden, die Zelle aktiviert werden. Falls der Wert nicht gefunden wird, zurück in Sheet 1 und dort 1 Zelle nach unten.

Anzeige
AW: Makro steigt aus
15.02.2008 07:51:46
Gerd
Hallo Klaus,
so nebenbei, gegen einen Gruß am Schluss eines Beitrags hätte hier keiner etwas einzuwenden.
Prinzipiell, schau mal hier, speziell unter Performance(2) zu "Select/Activate", aber nicht nur.
http://www.online-excel.de/excel/grusel_vba.php?f=2
Die Find-Methode liefert bei keinem Treffer einen Error, der nicht verhindert, sondern nur
behandelt u. verarbeitet werden kann.
Einstweilen kannst Du es als Zwischenlösung so versuchen.

Sub test()
Dim C As Range
On Error Resume Next
Set C = Sheets(2).UsedRange.Find(What:=ActiveCell.Value, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If Not C Is Nothing Then
'Treffer, machwas
With Sheets(1).Range("A" & ActiveCell.Row & ": E" & ActiveCell.Row)
.Interior.ColorIndex = 6
Sheets(2).Range("A" & C.Row & ": E" & C.Row).Interior.ColorIndex = .Interior.ColorIndex
Sheets(2).Range("A" & C.Row & ": E" & C.Row).Value = .Value
End With
Application.Goto C, True
Else
ActiveCell.Offset(1, 0).Activate
End If
On Error GoTo 0
End Sub


Gruß Gerd

Anzeige
AW: Makro steigt aus
15.02.2008 10:50:00
Klaus
Hallo Gerd,
Entschuldigung! das mit dem Gruß ist mir im Eifer des Gefechts dadurch gegangen.
Dein Vorschlag funktioniert für das geschilderte Problem einwandfrei. Ich habe ihn etwas erweitert, funktioniert bis auf folgendes super: bei der Übertragung des Wertes aus "X" bis "Y" werden die Werte vertauscht "X" steht in "Y" und umgekehrt - auch das Format stimmt nicht.
Hast Du oder möglicherweise jemand anderes eine Idee?
Ich habe die geänderte Variante unten aufgeführt
Schon mal vielen Dank und freundliche Grüsse

Sub test()
Dim C As Range
On Error Resume Next
Set C = Sheets(2).UsedRange.Find(What:=ActiveCell.Value, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If Not C Is Nothing Then
'Treffer, machwas
With Sheets(1).Range("A" & ActiveCell.Row & ": E" & ActiveCell.Row)
.Interior.ColorIndex = 6
Sheets(2).Range("A" & C.Row & ": E" & C.Row).Interior.ColorIndex = .Interior.ColorIndex
Sheets(2).Range("A" & C.Row & ": E" & C.Row).Value = .Value
End With
Application.Goto Sheets(1), True
' bis hier alles super
With Sheets(1).Range("X" & ActiveCell.Row & ": Y" & ActiveCell.Row)
.Interior.ColorIndex = 6
Sheets(2).Range("X" & C.Row & ": Y" & C.Row).Interior.ColorIndex = .Interior.ColorIndex
Sheets(2).Range("X" & C.Row & ": Y" & C.Row).Value = .Value
End With
Application.Goto Sheets(1), True
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
On Error GoTo 0
End Sub


Anzeige
AW: Makro steigt aus
15.02.2008 11:24:22
Klaus
Hallo Gerd,
das mit den vertauschten Zellen hat sich erledigt. Da habe ich die Augen nicht richtig auf gemacht.
Ich hatte eine Spalte in Sheet 2 eingefügt, somit passte natürlich alles nicht mehr.
Das Formatproblem habe ich aber immer noch. In Spalte "W" steht ein Datum und in Spalte "X" eine Währung. angezeigt wird nach dem Makrodurchlauf das Datum im Format 10/31/2007 und die Währung im Format $60,00. Richtig wäre aber 31.10.2007 und 60,00€
Für deine / eure Hilfe vielen, vielen Dank.
Grüsse zum sonnigen Freitag
Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige