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

Grundloses Next ohne for

476 views
Skip to first unread message

Volker Neurath

unread,
Jul 1, 2010, 9:37:00 AM7/1/10
to
Hi nochmal,

warum steigt dieses <zensiert> program bei folgendem Codeausschnitt:

----------------------
With ProjektBasisDaten
'Auftragsgrund-Bestandskunde auswerten
If .lstGrundBestandsKunde.Selected(7) Then
Range("Antragsgrund_Bestandskunde").Value =
lstGrundBestandsKunde.List(7)
Else
For i = 0 To .lstGrundBestandsKunde.ListCount - 1
If .lstGrundBestandsKunde.Selected(i) Then
strReasons = strReasons &
lstGrundBestandsKunde.List(i) & vbCrLf
Next i

Range("Antragsgrund_Bestandskunde").Value = strReasons

End If

End With
----------------------


mit der Fehlermeldung
"Next ohne For"

aus?

Die For-Schleife ist doch korrekt abgeschlossen?

ich bin in VBA definitiv kein Anfänger mehr, aber Excel macht mich
wieder dazu :(

Volker,
dem immer mehr vor VBA in Excel graut... und lieber bei Access bleiben
würde...


--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.

Frank Willberger

unread,
Jul 1, 2010, 9:41:24 AM7/1/10
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Moin, Moin!


Am 01.07.2010 15:37, schrieb Volker Neurath:
> warum steigt dieses <zensiert> program bei folgendem Codeausschnitt:
>
> ----------------------
> With ProjektBasisDaten
> 'Auftragsgrund-Bestandskunde auswerten
> If .lstGrundBestandsKunde.Selected(7) Then
> Range("Antragsgrund_Bestandskunde").Value =
> lstGrundBestandsKunde.List(7)
> Else
> For i = 0 To .lstGrundBestandsKunde.ListCount - 1
> If .lstGrundBestandsKunde.Selected(i) Then
> strReasons = strReasons &
> lstGrundBestandsKunde.List(i) & vbCrLf

Wie wär's hier mit : End If

> Next i
>
> Range("Antragsgrund_Bestandskunde").Value = strReasons
>
> End If
>
> End With
> ----------------------

Ciao

Frank
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: GnuPT-Portable 1.7.0.0
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFMLJsEwXPofgbwJiURAl0AAKDBmHgt/JiALt4Hg/Mfj8HVA29JvQCgqQ6M
MkwRIxz1IMGBUj1tKSGszac=
=ZPH2
-----END PGP SIGNATURE-----

Volker Neurath

unread,
Jul 1, 2010, 9:46:15 AM7/1/10
to
Frank Willberger wrote:


> Wie wär's hier mit : End If

Danke fürs Scheuklappen-liften. ;)

Volker

Andreas Killer

unread,
Jul 1, 2010, 9:51:36 AM7/1/10
to
Am 01.07.2010 15:37, schrieb Volker Neurath:

> warum steigt dieses <zensiert> program bei folgendem Codeausschnitt:
>
> ----------------------
> With ProjektBasisDaten
> 'Auftragsgrund-Bestandskunde auswerten
> If .lstGrundBestandsKunde.Selected(7) Then
> Range("Antragsgrund_Bestandskunde").Value = lstGrundBestandsKunde.List(7)
> Else
> For i = 0 To .lstGrundBestandsKunde.ListCount - 1
> If .lstGrundBestandsKunde.Selected(i) Then

So würd's auch gehen:

If .lstGrundBestandsKunde.Selected(i) Then _

> strReasons = strReasons & lstGrundBestandsKunde.List(i) & vbCrLf
> Next i
>
> Range("Antragsgrund_Bestandskunde").Value = strReasons
>
> End If
>
> End With
> ----------------------

Andreas.

Volker Neurath

unread,
Jul 1, 2010, 9:59:33 AM7/1/10
to
Andreas Killer wrote:


> So würd's auch gehen:

> If .lstGrundBestandsKunde.Selected(i) Then _

>> strReasons = strReasons & lstGrundBestandsKunde.List(i) & vbCrLf
>> Next i
>>
>> Range("Antragsgrund_Bestandskunde").Value = strReasons
>>
>> End If
>>
>> End With
>> ----------------------

Versteh ich jetzt nicht... (zu heiss hier ;) )

Ich muss Splitten, weil List(7)="neukunde".
Ist dieser Eintrag gewählt, sind alle anderen Listeneinträge
ausgeschlossen

Deswegen dieses Konstrukt.

Volker

Andreas Killer

unread,
Jul 1, 2010, 10:13:36 AM7/1/10
to
Am 01.07.2010 15:59, schrieb Volker Neurath:

> Versteh ich jetzt nicht... (zu heiss hier ;) )

Ein _ verbindet Zeilen miteinander, damit kann man zu lange Zeilen
umbrechen.

Dementsprechend verbindet sich

If .lstGrundBestandsKunde.Selected(i) Then _
strReasons = usw.

zu

If .lstGrundBestandsKunde.Selected(i) Then strReasons = usw.

Ein Beispiel:

Sub Test()
Dim I As Integer
Cells.ClearContents
For I = 1 To 10
Cells(I, 1) = I
Next
End Sub

Kann man so umbrechen:

Sub _
Test _
( _
)
Dim _
I _
As _
Integer
Cells _
. _
ClearContents
For _
I _
= _
1 _
To _
10
Cells _
( _
I _
, _
1 _
) _
= _
I
Next
End _
Sub

Lad Dir das mal in den VBA-Editor und debugge die Sub mal mit F8.

Das Zeilenumbrechen geht aber nicht endlos, ich meine irgendwo bei
25mal umbrechen ist Schluß.

Andreas.

Frank Willberger

unread,
Jul 1, 2010, 10:24:05 AM7/1/10
to
Am 01.07.2010 15:46, schrieb Volker Neurath:

>> Wie wär's hier mit : End If
>
> Danke fürs Scheuklappen-liften. ;)

Kein Problem, der Fehler wir auch von mir gerne genommen :-)

Frank

Volker Neurath

unread,
Jul 1, 2010, 10:49:21 AM7/1/10
to
Andreas Killer wrote:

> Am 01.07.2010 15:59, schrieb Volker Neurath:

>> Versteh ich jetzt nicht... (zu heiss hier ;) )
> Ein _ verbindet Zeilen miteinander, damit kann man zu lange Zeilen
> umbrechen.

Das weiss ich. Aber was genau hat das jetzt mit meinem Code zu tun?

Volker, rätselnd

Andreas Killer

unread,
Jul 1, 2010, 11:10:32 AM7/1/10
to
Am 01.07.2010 16:49, schrieb Volker Neurath:

>> Ein _ verbindet Zeilen miteinander, damit kann man zu lange Zeilen
>> umbrechen.
> Das weiss ich. Aber was genau hat das jetzt mit meinem Code zu tun?

Ist wirklich heiß bei Dir, halt Dir mal 'ne kühle Flasche Bier an'n
Kopp. ;-)))

Also der Code:

If Irgendwas Then
MachWas
End If

ist gleich dem Code:

If Irgendwas Then _
MachWas

Ergo: Man muss nicht unbedingt ein "End If" haben, wenn die
"MachWas"-Anweisung nur aus einer Zeile besteht, geht auch ein _
hinter dem Then.

Andreas.

Frank Willberger

unread,
Jul 1, 2010, 2:03:20 PM7/1/10
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 01.07.2010 17:10, schrieb Andreas Killer:

[...]


> Also der Code:
>
> If Irgendwas Then
> MachWas
> End If
>
> ist gleich dem Code:
>
> If Irgendwas Then _
> MachWas
>
> Ergo: Man muss nicht unbedingt ein "End If" haben, wenn die
> "MachWas"-Anweisung nur aus einer Zeile besteht, geht auch ein _ hinter
> dem Then.

Wobei das zweite ja eigentlich nur ein optisch aufgepimptes

if Irgendwas then MachWas

ist, denn nur wenn if in einer Zeile steht, dann brauch man kein end if.

Vielleicht _
hilft das jetzt bei _
der Hitze :-)

Frank

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: GnuPT-Portable 1.7.0.0
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFMLNhnwXPofgbwJiURAuH+AJwIfxvDxIBGKw+UMdysuTsY4B8CEwCgwHzh
IXXRMuhh2I23i6z2ih9GxTo=
=usW9
-----END PGP SIGNATURE-----

Volker Neurath

unread,
Jul 1, 2010, 1:52:24 PM7/1/10
to
Andreas Killer wrote:

> Am 01.07.2010 16:49, schrieb Volker Neurath:
>
>>> Ein _ verbindet Zeilen miteinander, damit kann man zu lange Zeilen
>>> umbrechen.
>> Das weiss ich. Aber was genau hat das jetzt mit meinem Code zu tun?

> Ist wirklich heiß bei Dir,

Scheint so. ;)

> halt Dir mal 'ne kühle Flasche Bier an'n
> Kopp. ;-)))

Im Kühlschrank liegt nur frisches ;)

> Also der Code:
>
> If Irgendwas Then
> MachWas
> End If
>
> ist gleich dem Code:
>
> If Irgendwas Then _
> MachWas
>
> Ergo: Man muss nicht unbedingt ein "End If" haben, wenn die
> "MachWas"-Anweisung nur aus einer Zeile besteht, geht auch ein _
> hinter dem Then.

Autsch, ja.

Sorry, manchmal fällt der Groschen nur Centweise ;)

Volker
--
Im übrigen bin ich der Meinung, dass TCPA/TCG verhindert werden muss

Wenn es vom Himmel Zitronen regnet, dann lerne, wie man Limonade macht

0 new messages