# VB Zahlenreihe



## Lobo (20 Mai 2008)

Hallo,

folgendes Problem:

Ich möchte eine Zahlenreihe (z.B.: 5, 10, 15...) in einem Labelfeld anzeigen, kann mir jemand den Befehl zum anzeigen nennen.

Bei  meiner Lösung wird immer nur der letzte Wert angezeigt (Ich breche bei hundert ab). 

Meine Idee ist, dass am Ende meiner Schleife der aktuelle Wert hinter dem letzten mit angezeigt und nicht überschrieben wird.

mfg, Lobo.


----------



## Ralle (20 Mai 2008)

Dann mach aus der Zahl einen String und häng diesen hinten an einen String, welchen du anzeigst.


----------



## Larry Laffer (20 Mai 2008)

Wie sieht denn deine Lösung aus ...?
Hast du schon darüber nachgedacht, ein 2. Labelfeld für den Vorgängerwert zu machen ?


----------



## Lobo (20 Mai 2008)

@ Ralle

Hallo, genau das könnte die Lösung sein. Aber wie heißt der Befehl zum anhängen.

Ich habe das so verstanden dass ich bei jedem Schleifendurchlauf die Zahl (also dann den String) an den vorherigen String hängen kann.

@ Larry

Hallo, ich möchte nur ein Labelfeld zum anzeigen benutzen.

dank an alle


----------



## Ralle (20 Mai 2008)

Nun ja, du kannst das auf 2 Wegen lösen:

1. In der SPS. IEC-Funktionen aus der Library benutzen. Da gibt es Funktionen zum Wandeln in String und Funktionen zur Stringmanipulation (Anhängen, ausschneiden etc.) Am Einfachsten läßt sich das mit SCL programmieren.

2. Im Panel mit VBA, dazu kann vielleicht Larry mehr sagen, ich bin nicht so der VBA-Progger .


----------



## Ralle (20 Mai 2008)

Hier mal ein kleines Beispiel in SCL:


```
FUNCTION_BLOCK FB10

Title = 'FIS-Modulname'
//
// FIS-Modulname 
// Zerlegung des Auftragsfilesnamens
// in seine einzelnen Bestandteile
// und zusammensetzen von Präfix und YYMMTT 
// zum FIS-Modulnamen
// 
Version : '1.0'
author  : Ralle
name    : FIS_MOD
family  : SYSTEM

VAR_INPUT
  // Eingangsparameter
  Auftragname: STRING[20];
  Praefix: STRING[2];
END_VAR

VAR_OUTPUT // Ausgangsparameter
  FISname: STRING[10];
END_VAR

VAR_TEMP
    // temporäre Variablen
  FISNummer: STRING[8];
END_VAR

//Aufbau des Filenamens
//YYMMTTxxxxxEyyyyyyyy

FISNummer := '        ';
FISNummer := MID(IN := Auftragname ,L := 8 ,P := 13);

FISname := CONCAT(IN1 := Praefix 
                 ,IN2 := FISNummer
                  );

;
END_FUNCTION_BLOCK
```
MID und CONCAT sind FC26 und FC2 aus der Standard-Library, IEC-Funktions. Du mußt noch das Trennzeichen dazwischen setzen, ein Komma und immer an deinen Gesamtstring anhängen. Außerdem noch das Wandeln in String. Ein Problem kann es werden, wenn du folgendes machen willst:

Gesamtstring als INOUT

Gesamtstring := Gesamtstring + ';' + Addstring; (hier nur mal im übertragenen Sinn mit +!)

Wenn das nicht gehen sollte, dann mußt du vorher evtl. Folgendes machen:

Tempstring := Gesamtstring;
Gesamtstring := Tempstring + ';' + Addstring;

Ich hatte das Problem einmal, weiß aber nicht mehr, ob das in einem FB oder FC so war! Also probieren.


----------



## Larry Laffer (20 Mai 2008)

Dann nehme ich den Ball mal gleich auf ...

```
AnzeigeString = CStr(Lastwert) + " - " + CStr (NewWert)
LastWert = NewWert
```
Das wäre die einfachste Form.
Ansosnsten würde ich doch schon gerne sehen, was du dir da ausgedacht hast ...

Gruß
LL


----------



## Lobo (20 Mai 2008)

@Ralle

erstmal Danke. Ich arbeite allerdings rein in VB.

@LL

dass könnte die Lösung sein. Ich werde dass gleich mal ausprobieren.

danke danke


----------



## Lobo (21 Mai 2008)

@LL

hier mein Code:

Dim nZAHL
Dim NEUZAHL
Dim ALTZAHL
Dim ZAHLREIHE

Private Sub Rechne_Click()
NEUZAHL = 0
nZAHL = Zahl.Text

If NEUZAHL < 100 Then

        Do
            NEUZAHL = NEUZAHL + nZAHL
            lblZahlenreihe.Caption = CStr(nZAHL) + "," + CStr(NEUZAHL)
        Loop While NEUZAHL < 100

End If

End Sub

Allerdings wird mir bei dieser Lösung nur  die erste und letzte Zahl angezeigt und nicht alle,  genau da liegt mein Problem im voraus Danke. 

Mfg, Lobo :-D


----------



## Rainer Hönle (21 Mai 2008)

Einfach noch ein paar Zeilen eingefügt/modifiziert:


Lobo schrieb:


> @LL
> 
> hier mein Code:
> 
> ...


----------



## JoeeDancer (28 Mai 2008)

Hi 
Versuch das mal

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Rechne_Click()
Dim nZAHL As Integer
Dim NEUZAHL As Integer
Dim ALTZAHL As Integer
Dim ZAHLREIHE As Integer
Dim Text As String
NEUZAHL = 0
nZAHL = 5
Text = ""

Do
    NEUZAHL = NEUZAHL + nZAHL
    Text = Text & ", " & CStr(NEUZAHL)
    With lblZahlenreihe
      .Caption = Text
      .Refresh
    End With
    Sleep 50
Loop While NEUZAHL < 100
End Sub

Hier noch die Form als JPG









Gruß 

Joee Dancer


----------

