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

Schleifen Problem

Schleifen Problem
11.01.2015 16:59:35
Stefan
Hallo Excel Profis,
ich habe schon viele Hilfestellungen hier für Probleme gefunden die mir wirklich sehr viel weiter geholfen haben. Vielen Dank dafür. Leider hänge ich nun schon länger an einem Problem und möchte euch gerne um Hilfe bitten.
Ich habe eine Tabelle mit 400 Spalten und 150 Zeilen. Über ein Formular möchte ich nun Werte (Messwerte) nach bestimmten Bedingungen in die Tabelle schreiben.
.txt_1.Value sind die x-Werte und .txt_2.Value die y-Werte
Was ich bisher habe:

Dim a As Integer
Dim b As Integer
Dim lngRow As Long
Dim sngIncr As Single
Dim am As Single, imo As Single, imu As Single
am = 2
imo = 10
imu = 0
sngIncr = 0.5
For lngRow = 10 To 160
With UserForm1
a = Worksheets("Tabelle1").Cells(lngRow, 3).Value
b = .txt_3.Value
If a >= b Then
ElseIf .txt_1.Value - am  0.5 And .txt_2.Value -  _
imo  sngIncr Then
Worksheets("Tabelle1").Cells(lngRow, 3).Value = .txt_3.Value
End If
End With
sngIncr = sngIncr + 1!
Next
Diese Zeilen machen nun auch genau was ich möchte, jedoch nur für Spalte C. Leider habe ich aber nun 400 Spalten und müsste dann 400 mal diese Schleife programmieren. Da würden mir vermutlich zu viele Fehler passieren.
Meine nächste Schleife würde dann so aussehen:

Dim a2 As Integer
Dim b2 As Integer
Dim lngRow2 As Long
Dim sngIncr2 As Single
Dim am2 As Single, imo2 As Single, imu2 As Single
am2 = 2
imo2 = 10
imu2 = 0
sngIncr2 = 0.5
For lngRow2 = 10 To 160
With UserForm1
a2 = Worksheets("Tabelle1").Cells(lngRow2, 4).Value
b2 = .txt_3.Value
If a2 >= b2 Then
ElseIf .txt_1.Value - am  1.5 And .txt_2.Value -  _
imo  sngIncr2 Then
Worksheets("Tabelle1").Cells(lngRow2, 4).Value = .txt_3.Value
End If
End With
sngIncr2 = sngIncr2 + 1!
Next
Eigentlich hat sich nun nur die Spalte verändert und die Bedingung

.txt_1.Value - am  0.5

zu

.txt_1.Value - am  1.5
Hat jemand einen Tipp wie ich das ganze in einer Routine machen kann? Für Hilfe wäre ich euch wirklich sehr dankbar.

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

Betreff
Datum
Anwender
Anzeige
AW: Schleifen Problem
11.01.2015 17:56:56
Gerd
Hallo Stefan,
ich habe dir so auf die Schnelle mal eine Doppelschleife hingeschnuddelt. :-)
    Dim lngRow As Long
Dim dlblGrenze As Double
Dim lngSpalte As Long
For lngRow = 10 To 160
For lngSpalte = 3 To 403
dblGrenze = 0.5
With UserForm1
If Worksheets("Tabelle1").Cells(lngRow, lngSpalte).Value  dblGrenze And .txt_2.Value - _
10  dblGrenze Then
Worksheets("Tabelle1").Cells(lngRow, lngSpalte).Value = .txt_3.Value
End If
End With
dblGrenze = dblGrenze + 1
Next
Next
Gruß Gerd

AW: Schleifen Problem
11.01.2015 17:59:37
Gerold
Hallo Stefan
Leider sind nicht alle Angaben vorhanden
ändern sich (und wenn ja) wie ändern sich die Werte der Variablen

Dim a As Integer, b As Integer
Dim lngRow As Long, sngIncr As Single
Dim am As Single, imo As Single, imu As Single
Dim Spalte As Long
am = 2
imo = 10
imu = 0
sngIncr = 0.5
For Spalte = 3 To 400
For lngRow = 10 To 160
With UserForm1
a = Worksheets("Tabelle1").Cells(lngRow, Spalte).Value
b = .txt_3.Value
If a >= b Then
' wenn der Wert von 0,5 immer um 1 Steigt (Ist aber nicht bekannt)
ElseIf .txt_1.Value - am  0.5 + (Spalte - 3) _
And .txt_2.Value - imo  sngIncr Then
Worksheets("Tabelle1").Cells(lngRow, Spalte).Value = .txt_3.Value
End If
End With
sngIncr = sngIncr + 1!
Next
Next
________________
Gruß Gerold

Anzeige
AW: Schleifen Problem
11.01.2015 19:31:57
Stefan
Hallo ihr Beiden,
vielen Dank für eure Lösungsvorschläge. Leider funktionieren beide Lösungen nicht. Allerdings habe ich versucht die Lösungen nachzuvollziehen und würde beide Lösungen als richtig ansehen. Klappt aber leider nicht...
Zu Gerlod: Ja, der Wert soll sich von 0,5 jeweils um 1 erhöhen.
Zu Gerd L: Das zweite If müsste ein elseif sein, oder?
Ich habe nun mal meine Datei hochgeladen. Ich wäre euch sehr dankbar, wenn ihr euch die Datei mal ansehen könntet.
https://www.herber.de/bbs/user/94932.xlsm
Viele Grüße, Stefan

Anzeige
AW: Schleifen Problem
11.01.2015 20:25:39
Gerold
Hallo Stefan
Deine Formel kann so nie Stimmen
.txt_1.Value - am 0.5
kann nie kleiner und gleichzeitig größer sein wie 0,5
genauso wenig wie
.txt_2.Value - imo sngIncr
kann nie kleiner und gleichzeitig größer sein kann wie sngIncr
________________
Gruß Gerold

AW: Schleifen Problem
11.01.2015 20:51:23
Stefan
Hallo Gerold,
vielen Dank für deine Antwort. Ich mache mal ein Beispiel:

.txt_1.Value - am  0.5
am ist 2. Wenn wir jetzt von positiven ganzen Zahlen ausgehen stimmt die Gleichung für .txt_1.Value=1 und .txt_1.Value=2. Dementsprechend sollte der Zahlenwert aus .txt_3.Value dann genau in die Zellen geschrieben werden für die diese Gleichung zustimmt.
Das selbe gilt auch für:

.txt_2.Value - imo  sngIncr
Nur wird sngIncr ja von 0,5 um 1 pro Schleife hochgezählt. In der ersten Bedingung wird auch von 0,5 jeweils um 1 hoch gezählt.
Im Prinzip brauche ich für jede Zelle die Bedingungen:
.txt_2.Value - imo sngIncr
.txt_1.Value - am sngIncr
und wenn der Wert in der Tabelle in der entsprechenden Zelle größer ist als der Wert in .txt_3.Value dann soll er nicht geändert werden, wenn er kleiner ist dann soll der Wert durch den Inhalt von .txt_3.Value geändert werden.
In meiner Beispiel Datei klappt das leider nur jeweils für eine Spalte, nicht aber für die ganze Tabelle.
Viele Grüße
Stefan

Anzeige
AW: Schleifen Problem
11.01.2015 21:13:46
Gerold
Hallo Stefan
Sorry , mein Fehler.
Hatte 2 mal minus gerechnet.
________________
Gruß Gerold

AW: Schleifen Problem
11.01.2015 21:52:33
Gerold
Hallo
Ändere mal
b = .txt_3.Value
um in
b = CInt(.txt_3.Value)
________________
Gruß Gerold

AW: Schleifen Problem
11.01.2015 22:10:19
Stefan
Hallo Gerold,
erstmal vielen Dank für dein Bemühen!
meinst du so:

Dim a As Integer, b As Integer
Dim lngRow As Long, sngIncr As Single
Dim am As Single, imo As Single, imu As Single
Dim Spalte As Long
am = 2
imo = 10
imu = 0
sngIncr = 0.5
For Spalte = 3 To 400
For lngRow = 10 To 160
With UserForm1
a = Worksheets("Tabelle1").Cells(lngRow, Spalte).Value
b = CInt(.txt_3.Value)
If a >= b Then
' wenn der Wert von 0,5 immer um 1 Steigt (Ist aber nicht bekannt)
ElseIf .txt_1.Value - am  0.5 + (Spalte - 3) _
And .txt_2.Value - imo  sngIncr Then
Worksheets("Tabelle1").Cells(lngRow, Spalte).Value = .txt_3.Value
End If
End With
sngIncr = sngIncr + 1!
Next
Next
Für die erste Spalte klappt das wunderbar, aber leider springt er nicht in die weiteren Spalten. Sprich es klappt nur wenn ich bei .txt_1.Value eine 1 eingebe. Bei .txt_1.Value=2 klappt es nicht mehr. Ich versteh nur leider absolut nicht warum...

Anzeige
AW: Schleifen Problem
11.01.2015 22:54:41
Gerold
Hallo Stefan
Probiers mal so

Dim a As Integer
Dim b As Integer
Dim lngRow As Long
Dim sngIncr As Single
Dim am As Single, imo As Single, imu As Single
am = 2
imo = 10
imu = 0
sngIncr = 0.5
For Spalte = 3 To 403
sngIncr = 0.5
For lngRow = 10 To 160
With UserForm1
a = Worksheets("Tabelle1").Cells(lngRow, Spalte).Value
b = CInt(.txt_3.Value)
If a >= b Then
ElseIf CInt(.txt_1.Value) - am  0.5 + (Spalte - 3) _
And CInt(.txt_2.Value) - imo  sngIncr Then
Worksheets("Tabelle1").Cells(lngRow, Spalte).Value = .txt_3.Value
End If
End With
sngIncr = sngIncr + 1
Next
Next
________________
Gruß Gerold

Anzeige
AW: Schleifen Problem
12.01.2015 10:18:04
Stefan
Hallo Gerold,
vielen, vielen Dank für deine Antwort. Deine Lösung funktioniert wunderbar. Ich bin schwer begeistert! Danke!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige