Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
612to616
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
612to616
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleife

Schleife
18.05.2005 08:30:34
Klaus
Guten Morgen zusammen
Ich habe mir folgendes Makro gebastelt:
Range("P2").Select
Dim A As Integer
For A = 1 To 30000
If ActiveCell.Offset(0, 0).Value = "Clariant" _
And ActiveCell.Offset(0, -11).Value = "SIR1" Then
ActiveCell.Offset(0, -11) = "SIR1C"
End If
If ActiveCell.Offset(0, 0).Value = "Clariant" _
And ActiveCell.Offset(0, -11).Value = "SIR2 Then
ActiveCell.Offset(0, -11) = "SIR2C"
End If
If ActiveCell.Offset(0, 0).Value = "Clariant" _
And ActiveCell.Offset(0, -11).Value = "SIR3 Then
ActiveCell.Offset(0, -11) = "SIR3C"
End If
Selection.Offset(1, 0).Select
Next A
Meine Fragen:
Geht das auch einfacher?
Geht es irgendwie, dass die Schleife nur bis zum letzten Eintrag ausgeführt wird?
Vielen Dank im Voraus
Gruss Klaus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
18.05.2005 08:48:40
marcl
Moin Klaus,
vielleicht statt For A = 1 To 30000
Do While ActiveCell "" ' nicht leer
statt Next A
Loop
Gruß
marcl
AW: Schleife
18.05.2005 08:59:32
bst
Morgen,
versuch's mal so. Ganz ohne Select und ActiveCell.
cu, Bernd
--
Option Explicit
Sub AddC()
Dim A As Long, LastRow As Long
' Letzte Zeile aus Spalte P (=16) bestimmen
LastRow = GetLastRow(16)
For A = 2 To LastRow
If Cells(A, 16) = "Clariant" And Cells(A, 5) Like "SIR[123]" Then
Cells(A, 5) = Cells(A, 5) & "C"
End If
Next A
End Sub

Private Function GetLastRow(Optional Spalte As Integer = 1)
GetLastRow = IIf(Cells(Rows.Count, Spalte) = "", _
Cells(Rows.Count, Spalte).End(xlUp).Row, Rows.Count)
End Function

Anzeige
AW: Schleife
18.05.2005 09:02:19
Volker
Hallo Klaus,
1. brauchst du die entsprechenden Zellen nicht zu selektieren.
2. Range("P2").endxl(down).row liefer dir den Zeilenindex der letzten nichtleeren Zelle in Spalte P, wenn zwischendrin keine leeren Zellen sind.
sonst nimmt man Range("P65535").endxl(up).row
3. statt range und offset kann man meist besser mit cells(zeilenindex,spaltenindex) arbeiten, Spalte P hat den Spaltenindex 16, Start ist in Zeile 2
4. du kannst die if-Bedingungen auch verschachteln, die Abfrage nach "Clariant" muß nur einmal gemacht werden:
dim i,letzte as integer
letzte=range("P2").endxl(down).row
for i=2 to letzte
if cells(i,16)= "Clariant"
then
if cells(i,5) = "SIR1" Then
cells(i,5) = "SIR1C"
Else If cells(i,5) = "SIR2" Then
cells(i,5) = "SIR2C"
Else If cells(i,5) = "SIR3" Then
cells(i,5) = "SIR3C"
End If
End If
Next
Gruß
Volker
Anzeige
AW: Schleife
18.05.2005 09:18:06
Klaus
Vielen Dank für Eure Hilfe, werde das mal ausprobieren
Gruss Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige