Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
De ce i se zice Mariei "Stapa...

Colet valoare Londra București

BMW seria 3 rulat vs SsangYong Ko...

Share abonament Netflix
 Cum pot sa fac rost de un negativ...

Lant Bicicleta

Un designer artist: Raymond Loewy

ATS din contactor modular
 Parere apartament ~150k

Limitare la 100mb/s

Altercație

Cartonașe și stickere t...
 Ciobanesc german - zgarda electro...

Ce este instalatia asta? (Valea B...

BD-R Verbatim 25gb salvare Fisier

Lupte WW2
 

Suma de cifre in VBA

- - - - -
  • Please log in to reply
4 replies to this topic

#1
razz0rblade

razz0rblade

    New Member

  • Grup: Members
  • Posts: 14
  • Înscris: 06.01.2008
Buna,

Am si eu nevoie de ajutor la crearea unui cod pentru calcularea primelor 10 cifre dintr-un numar de cont de tipul xxx-xxxxxx-xx. Ultimele 2 x-uri trebuie sa fie restul impartirii sumei primelor x-uri la 97. Stiu ca restul impartirii se obtine cu MOD, numai ca nu reusesc sa imi dau seama cum adun valorile primelor pozitii  din numar, avand in vedere ca trebuiesc numarate si "-".

#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,477
  • Înscris: 10.08.2005
dupa ce aduni cifra la suma,  o elimini din string.

vezi mai multe despre Left , Mid , Right.

verifici tot timpul ca prima cifra sa nu fie -.

spor

#3
stupidcow

stupidcow

    Active Member

  • Grup: Members
  • Posts: 1,437
  • Înscris: 24.12.2004

 razz0rblade, on 5th August 2010, 10:52, said:

Buna,

Am si eu nevoie de ajutor la crearea unui cod pentru calcularea primelor 10 cifre dintr-un numar de cont de tipul xxx-xxxxxx-xx. Ultimele 2 x-uri trebuie sa fie restul impartirii sumei primelor x-uri la 97. Stiu ca restul impartirii se obtine cu MOD, numai ca nu reusesc sa imi dau seama cum adun valorile primelor pozitii  din numar, avand in vedere ca trebuiesc numarate si "-".

Quote

Function testcont(Cont As String) As Boolean
  Dim part1, part2 As String
  Dim i As Integer
  Dim Suma As Long

  part1 = Replace(Left(Cont, 10), "-", "")
  part2 = Right(Cont, 2)

  Suma = 0
  For i = 1 To Len(part1)
    Suma = Suma + Val(Mid(part1, i, 1))
  Next i
  
  If (Suma Mod 97) = Val(part2) Then
    testcont = True
  Else
    testcont = False
  End If
End Function



Ar mai trebui testat in functie ca stringul are lungimea de 13 caractere, altfel s-ar putea sa dea eroare

#4
razz0rblade

razz0rblade

    New Member

  • Grup: Members
  • Posts: 14
  • Înscris: 06.01.2008

 stupidcow, on 5th August 2010, 11:21, said:

Ar mai trebui testat in functie ca stringul are lungimea de 13 caractere, altfel s-ar putea sa dea eroare
Va multumesc pentru ajutorul prompt!

#5
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
Salut,

Codul de mai jos ar trebui sa mearga fara probleme pentru un sir al carui format e mereu acelasi.


Option Explicit
Private Const ACCOUNT_NUMBER_TEMPLATE				   As String = "###-######-##"
Private Const ACCOUNT_NUMBER_DELIMITER				  As String = "-"
' e vorba aici de lungimea rezultata prin eliminarea separatorului
Private Const ACCOUNT_NUMBER_LENGTH					 As Long = 11
Private Const ACCOUNT_NUMBER_MASK					   As Long = 97

Private Function validateAccountNumber(ByVal strInputValue As String) As Boolean
	Dim lngCnt								  As Long
	Dim lngResult							   As Long
	Dim lngCheckSum							 As Long

	' setare retur
	validateAccountNumber = False

	' tratare eroare
	On Error GoTo validateAccountNumber_Error

	' daca nu e format valid - iesi
	If Not (strInputValue Like ACCOUNT_NUMBER_TEMPLATE) Then GoTo validateAccountNumber_Exit
	
	' eliminare separator
	strInputValue = Replace$(strInputValue, ACCOUNT_NUMBER_DELIMITER, "")
	
	' calcul suma pentru cele 2 grupe
	lngResult = 0
	For lngCnt = 1 To ACCOUNT_NUMBER_LENGTH - 2
		lngResult = lngResult + CLng(Mid$(strInputValue, lngCnt, 1))
	Next lngCnt
	
	' calculare checksum
	lngCheckSum = lngResult Mod ACCOUNT_NUMBER_MASK
	
	' verificarea si retur
	validateAccountNumber = (lngCheckSum = CLng(Right$(strInputValue, 2)))
validateAccountNumber_Exit:
	On Error GoTo 0
	Exit Function
validateAccountNumber_Error:
	MsgBox "Eroare!" & vbCrLf & "Code: " & Err.Number & vbCrLf & "Description: " & Err.Description, vbCritical
	Resume validateAccountNumber_Exit
End Function



Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate