Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zahlengenerator


Betrifft: Zahlengenerator von: urmila
Geschrieben am: 08.01.2018 15:21:22

Hallo liebe Community,

erst einmal ein frohes und gesundes neues Jahr.

Ich hoffe ihr könnt mir weiterhelfen.

Ich bin auf der Suche nach einer Lösung zum Generieren von zahlen, und zwar die sich hochzählt.

an folgendes habe ich gearbeitet aber es funktioniert nicht richtig:

Dim tZahl as Variable, tAnzahl, hR

tZahl = Me.tbxZahl.value
'die Zahlen können unterschiedlich sein (also 1-30+ Stellig) 100236562563254120; 100005; 15;

tAnzahl = me.tbxAnzahl.value
'hier bestimmt man wieviele Zahlen generiert werden sollen

For hR = 0 To tAnzahl

MsgBox = tZahl + hR 

Next hR
Beispiel
Zahl: 100000598
Anzhl: 50
Ergebnis: 100000998, 100000999, 100001000, 100001001, 100001002, 100001003 etc.

Die Sache hier ist dass die Nullen am Anfang immer ignoriert werden, wenn ich den String teilen würde.
(hier fügt er einfach die Zahl hinzu oder bei einer zB 20-stelligen Zahl meldet er "Überlauf"

Über Eure Hilfe würde ich mich sehr freuen.

Danke und LG
Urmila

  

Betrifft: AW: Zahlengenerator von: Rudi Maintaire
Geschrieben am: 08.01.2018 16:14:22

Hallo,
so geht das:

  Dim tZahl As Long, tAnzahl As Long, hR As Long
  
  tZahl = Me.tbxZahl.Value
  'die Zahlen können unterschiedlich sein (also 1-30+ Stellig) 100236562563254120; 100005; 15;
  
  tAnzahl = Me.tbxAnzahl.Value
  'hier bestimmt man wieviele Zahlen generiert werden sollen
  
  For hR = 0 To tAnzahl - 1
    MsgBox tZahl + hR
  Next hR

Gruß
Rudi


  

Betrifft: AW: Zahlengenerator von: urmila
Geschrieben am: 10.01.2018 10:54:44

Hallo Rudi,

vielen lieben Dank für deine Hilfe.
ich habe diese jetzt als Long definiert aber wenn ich eine 20-stellige Zahl eingebe die hochgerechnet werden soll, kommt immer die Fehlermeldung Überlauf

Was mache ich da falsch?

Danke und LG
Urmila


  

Betrifft: AW: Zahlengenerator von: Hajo_Zi
Geschrieben am: 10.01.2018 16:13:42

Hallo Urmila,

Excel kennt nur 15 Stellen.

GrußformelHomepage

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.

Beiträge von Werner, Luc, robert und folgende lese ich nicht.


  

Betrifft: AW: Zahlengenerator von: Piet
Geschrieben am: 10.01.2018 19:45:45

Hallo Urmila

durch Hajo habe ich auch wieder was dazu gelernt, er ist nun mal ein Excel Profi.

Tatsache ist, das wir kleinen Ratgeber aber immer wieder nach Tricks suchen, wie man solche Aufgaben trotzdem lösen kann, und nach der Devise verfahren - Computer sind doof, die kann man mit richtigem Wissen einfach austricksen!!

mein Vorschlag:
unterer Code prüft die Laenge (Len) der tZahl. Ist die mehr als 15 Stellen schneidet das Makro die vorderen Stellen einfach als Text String ab, und rechnet ganz normal mit der Restzahl. Bei der Ausgabe in die Zelle wird bei langen Zahlen die Linke Zahl (als String) wieder angehangen!!

Tatsache ist das Excel dann korrekte Zahlen bis 15 Stellen ausgibt, danach aber die Zahl als Text String!
Optisch sieht man das nicht, damit rechnen kann Excel nicht. Probier mal ob du damit zurecht kommst.

mfg Piet

PS Die tZahl Variabel muss auf Variant gesetzt werden, sonst kommt Laufzeitfehler!!

Sub Makro1_Excel_austricksen()
    Dim tZahl As Variant, LZahl As String   'LZahl = Left Zahl (15 stellen Links als Text!!)
    Dim tAnzahl As Long, hR As Long         'tZahl unbedingt auf Variant setzen
    
    tZahl = "100236562563254120"   'Me.tbxZahl.Value
    'die Zahlen können unterschiedlich sein (also 1-30+ Stellig) 100236562563254120; 100005; 15; _

    
    tAnzahl = 10000 'Me.tbxAnzahl.Value
    'hier bestimmt man wieviele Zahlen generiert werden sollen
    
    'hier trickxst man Excel aus, 17 Stellen auf String setzen!!
    If Len(tZahl) > 15 Then
        'tAnzahl + 2 Stellen zum normalen Berechnen
        LZahl = Left(tZahl, Len(tZahl) - Len(tAnzahl) - 2)
        tZahl = Right(tZahl, Len(tAnzahl) + 2)
    End If
    
    For hR = 0 To tAnzahl - 1
       Cells(hR + 5, 2) = tZahl & hR
       If LZahl <> "" Then Cells(hR + 5, 4) = "'" & CStr(LZahl & tZahl & hR)
    Next hR
End Sub