Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Zahl mit Punkten in VBA um eins erhöhen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Nahe an industriellen Realbedingungen
Autor Thema:  Zahl mit Punkten in VBA um eins erhöhen (718 mal gelesen)
oma1
Mitglied
designer


Sehen Sie sich das Profil von oma1 an!   Senden Sie eine Private Message an oma1  Schreiben Sie einen Gästebucheintrag für oma1

Beiträge: 131
Registriert: 22.03.2005

SW 2007 SP 3.4<P>Windows XP SP2<P>DELL Precision M65
Intel Core 2
2Ghz
2GB RAM

erstellt am: 18. Jan. 2008 11:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Habe folgendes Problem:

Die Variable "Zahl" hat den Wert 935.81.00.006.

wenn ich nun  Zahl = Zahl + 1  in VBA rechnen lasse,
ergibt das folgenden Variableninhalt: 9358100007.

Ich würde aber 935.81.00.007 benötigen.

Irgendwelche Tips?

Schönes Wochenende 
Christoph

------------------
cma

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lutz Federbusch
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau



Sehen Sie sich das Profil von Lutz Federbusch an!   Senden Sie eine Private Message an Lutz Federbusch  Schreiben Sie einen Gästebucheintrag für Lutz Federbusch

Beiträge: 3094
Registriert: 03.12.2001

alle SW seit 97+
AutoCAD2016-2022
ERP ProAlpha + CA-Link
Intel Core i7-7820K 32GB
Win10x64 Quadro K5000
SpacePilot

erstellt am: 18. Jan. 2008 12:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Deine Zahl ist sicher ein String. Von dem die letzten 3 Stellen abschneiden. In eine Zahl umwandeln, 1 addieren und wieder als String an den Rest ankleben.
Oder Du prüfst Dein jetziges Ergebnis auf Punkte und setzt die wieder neu, wenn sie nicht da sind - auch mit Stringoperationen.

------------------
Lutz Federbusch
Mein Gästebuch
Der Mensch, Herr oder Sklave der Technik?

[Diese Nachricht wurde von Lutz Federbusch am 18. Jan. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Harald Stratmann
Mitglied
Dipl.-Ing. Maschinenbau


Sehen Sie sich das Profil von Harald Stratmann an!   Senden Sie eine Private Message an Harald Stratmann  Schreiben Sie einen Gästebucheintrag für Harald Stratmann

Beiträge: 169
Registriert: 17.11.2003

W7 professional-64bit
12GB Ram
NVidia Quadro 2000
SWX 2013

erstellt am: 18. Jan. 2008 12:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Dim s1,s2 s3,s4 as string

s1 = left(zahl,3)
s2 = right(left(zahl,5),2)
s3 = right(left(zahl,7),2)
s4 = right (zahl,3)

Zahl = s1 & "." & s2 & "." & s3 & "." & s4

evtl. so

Gruß Harald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

oma1
Mitglied
designer


Sehen Sie sich das Profil von oma1 an!   Senden Sie eine Private Message an oma1  Schreiben Sie einen Gästebucheintrag für oma1

Beiträge: 131
Registriert: 22.03.2005

SW 2007 SP 3.4<P>Windows XP SP2<P>DELL Precision M65
Intel Core 2
2Ghz
2GB RAM

erstellt am: 18. Jan. 2008 12:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Harald,

es muss so lauten, dann klappt es:

Dim s1,s2 s3,s4 as string
s1 = left(zahl,3)
s2 = right(left(zahl,6),2)
s3 = right(left(zahl,9),2)
s4 = right (zahl,3)

Zahl = s1 & "." & s2 & "." & s3 & "." & s4


10 UUUUUUS

------------------
cma

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

modeng
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von modeng an!   Senden Sie eine Private Message an modeng  Schreiben Sie einen Gästebucheintrag für modeng

Beiträge: 7061
Registriert: 10.12.2003

erstellt am: 18. Jan. 2008 12:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich


NP.zip

 
so geht's auch, ziemlich wasserdicht (VB6 geht aber auch in VBA) :-)

Klaus

------------------
Lieber Fehler riskieren als Initiative verhindern (R. Mohn)

[Diese Nachricht wurde von modeng am 18. Jan. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ThoMay
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von ThoMay an!   Senden Sie eine Private Message an ThoMay  Schreiben Sie einen Gästebucheintrag für ThoMay

Beiträge: 5258
Registriert: 15.04.2007

SWX 2019
Windows 10 x64

erstellt am: 18. Jan. 2008 13:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich


Bild02-080118.jpg

 
Hallo und einen schönen guten Tag Christoph.

In Excel sollte man vornehmlich mit ZAHLEN rechnen und nicht mit Texten spielen.
Deshalb mein anderer Vorschlag: siehe Bild.

Gruß
ThoMay

------------------
Es gibt keine dummen Fragen, nur unzweckmäßige.
Hierauf bekommt man dann machesmal eine unzweckmäßige, freundliche Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Mitglied
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 18. Jan. 2008 13:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Hallo Christoph,

ich bin mir sicher das du nicht immer genau weist wieviele Stellen zwischen den Punkten liegen. Deshalb würde ich dir empfehlen den String mit Hilfe der Split Methode zu verarbeiten!

Habe da mal was gebastelt:

Code:

Dim sZahl As String
Dim sNeueZahl As String
Dim sZahlBestandteile() As String
Dim iZahl As Integer
Dim iBestandteillaenge As Integer
Dim iLaenge As Integer
Dim iBestandteile As Integer
sZahl = "935.81.00.006."
sZahlBestandteile = Split(sZahl, ".")
iBestandteillaenge = Len(sZahlBestandteile(UBound(sZahlBestandteile) - 1))
iZahl = CInt(sZahlBestandteile(UBound(sZahlBestandteile) - 1))
iZahl = iZahl + 1
sZahlBestandteile(UBound(sZahlBestandteile) - 1) = CStr(iZahl)
For iLaenge = Len(sZahlBestandteile(UBound(sZahlBestandteile) - 1)) To iBestandteillaenge - 1
    sZahlBestandteile(UBound(sZahlBestandteile) - 1) = "0" & sZahlBestandteile(UBound(sZahlBestandteile) - 1)
Next
For iBestandteile = 0 To UBound(sZahlBestandteile)
    If iBestandteile = UBound(sZahlBestandteile) Then
        sNeueZahl = sNeueZahl & sZahlBestandteile(iBestandteile)
    Else
        sNeueZahl = sNeueZahl & sZahlBestandteile(iBestandteile) & "."
    End If
Next
Debug.Print (sZahl)
Debug.Print (sNeueZahl)

------------------
Mfg Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 18. Jan. 2008 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Etwas aufwändiger, aber dafür flexibler (funktioniert auch, wenn Zahl mehr oder weniger Gruppen hat):

Code:
Private Sub Form_Load()
Dim Zahl As String
Dim record As Variant
Dim i As Integer
Zahl = "935.81.00.006"

'Zahl in Bestandteile zerlegen
record = Split(Zahl, ".")      'Record = {"935","81","00","006}

'davon letzten Teil nehmen
Zahl = record(UBound(record))  ' Zahl = "006"

'hier wird 1 auf die letzte Zahl addiert (oder sonst ne Aktion ausgeführt
Zahl = Trim(str(Val(Zahl) + 1)) ' Zahl= "7"

'wieder in Form bringen (Anzahl der Stellen)
Do While Len(Zahl) < Len(record(UBound(record)))
    Zahl = "0" & Zahl
Loop
record(UBound(record)) = Zahl  'Zahl = "007"

'Ausdruck wieder zusammensetzen
Zahl = record(0)
For n = 1 To UBound(record)
    Zahl = Zahl & "." & record(n)
Next n

MsgBox Zahl                    ' Zahl = "935.81.00.007"


Viele Wege führen nach Rom.

Ach ja...statt
      s3 = Right(Left(Zahl,7),2)
geht einfacher
      s3 = Mid(Zahl, 8, 2)

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VBSpawn
Mitglied
Programmierer


Sehen Sie sich das Profil von VBSpawn an!   Senden Sie eine Private Message an VBSpawn  Schreiben Sie einen Gästebucheintrag für VBSpawn

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 19. Jan. 2008 10:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Hi zusammen,

wenn es mal schnell gehen muss

Sub Test
        Dim Zahl As String
        Dim ZahlPlusEins As String
            Zahl = "935.81.00.006"
            ZahlPlusEins = Format(CDbl(Replace(Zahl, ".", "")) + 1, "000,00,00,000")
        Call MsgBox(ZahlPlusEins)
end sub

Gruß
Micha

Nachtrag: Geht auch wenn die letzte Zahl eine 999 ist.

------------------
Stell dir vor, es geht, und keiner kriegts hin.

   

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

[Diese Nachricht wurde von VBSpawn am 19. Jan. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 21. Jan. 2008 07:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von VBSpawn:
...
            ZahlPlusEins = Format(CDbl(Replace(Zahl, ".", "")) + 1, "000,00,00,000")


Hey, cooler Trick!

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VBSpawn
Mitglied
Programmierer


Sehen Sie sich das Profil von VBSpawn an!   Senden Sie eine Private Message an VBSpawn  Schreiben Sie einen Gästebucheintrag für VBSpawn

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 21. Jan. 2008 09:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

das ist kein Trick ..... nur grenzenlose Faulheit ;o)

------------------
Stell dir vor, es geht, und keiner kriegts hin.

  

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Ingenieur für Flugzeugstrukturen - mechanische Konstruktion und Berechnung (m/w/d)

Die FTI Engineering Network GmbH wurde 2001 gegrün­det. Als zugelassener Ent­wicklungs- und Herstellungs­betrieb um­fasst unser Portfolio komplette System­lösungen vom Design über die Herstellung bis zur Zertifizierung und Integration. Unsere Systemlösungen sind weltweit im Einsatz, z.B. im Airbus A380. Zu unseren Kunden zählen namhafte Flugzeug­hersteller, Airlines und Wartungsbetriebe. FTI ist Mitglied der Peiker Holding....

Anzeige ansehenLeitung, Teamleitung
Harald Stratmann
Mitglied
Dipl.-Ing. Maschinenbau


Sehen Sie sich das Profil von Harald Stratmann an!   Senden Sie eine Private Message an Harald Stratmann  Schreiben Sie einen Gästebucheintrag für Harald Stratmann

Beiträge: 169
Registriert: 17.11.2003

W7 professional-64bit
12GB Ram
NVidia Quadro 2000
SWX 2013

erstellt am: 21. Jan. 2008 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oma1 10 Unities + Antwort hilfreich

Den Trick von VBspawn find ich auch cool,
setzt allerdings voraus, daß im System die
Sprach- und Regionsoptionen entsprechend eingestellt sind.
Ansonsten finde ich es schon klasse, wie kreativ mit
einer solch banalen Programmieraufgabe umgegangen werden kann.
Ein dickes Lob von meiner Seite für die Beiträge.
Hier kann tatsächlich jedem geholfen werden.
Ich hoffe so geht's noch lange weiter.

Gruß an alle Harald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz