[ gogi100 @ 02.05.2022. 15:26 ] @
imam sledeci kod
Code:

Dim z As Range
Dim inputstring As String
Dim brojdecimalnihmesta As Integer
Dim DecSep As String
Dim ThousendSep As String
Dim CurrentSelectionRng As String
Dim eIndex As Long
Dim eRowIndex As Long


CurrentSelectionRng = Selection.Address
On Error Resume Next

MsgBox "Pre nego sto unesete format kolone: broj, tekst, datum, procenat; izaberite jednu celiju u koloni, koja ce biti selektovana", vbOKOnly
inputstring = InputBox(Prompt:="Unesi format kolone('b' - broj, 't' - tekst, 'd' - datum, 'p' - procenat", Title:="Format kolone")


 If inputstring = "b" Then
     MsgBox "Format celije(a) ce biti broj", vbOKOnly
    brojdecimalnihmesta = InputBox(Prompt:="Unesi broj decimalnih mesta", Title:="Decimalna mesta")
    eIndex = Application.ActiveCell.Column
    eRowIndex = Application.ActiveSheet.Cells(Rows.count, eIndex).End(xlUp).Row
    Range(Cells(2, eIndex), Cells(eRowIndex, eIndex)).Select
    System = Application.UseSystemSeparators
     With Application
        .DecimalSeparator = ","
        .ThousandsSeparator = "."
        .UseSystemSeparators = False
    End With
      If System = True Then
            DecSep = Application.International(xlDecimalSeparator)
            ThousendSep = Application.International(xlThousandsSeparator) 'not used;for information only
      Else
            DecSep = Application.DecimalSeparator
            ThousendSep = Application.ThousandsSeparator 'not used;for information only
      End If
  
   
   For Each z In Selection
   
  If brojdecimalnihmesta = 0 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    ElseIf brojdecimalnihmesta = 1 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    ElseIf brojdecimalnihmesta = 2 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    ElseIf brojdecimalnihmesta = 3 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    ElseIf brojdecimalnihmesta = 4 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    ElseIf brojdecimalnihmesta = 5 Then
        z.Value = FormatNumber(z.Value, brojdecimalnihmesta, , , vbTrue)
    End If
   
   Next
    With Selection
   
    .HorizontalAlignment = xlRight
   ' .NumberFormat = "###,###,###,###0.00"
    
   End With
   
   Exit Sub
 End If


kada primenim moj makro svaki broj na primer 34563,9843 se prikazuje u formatu 34.563,98 kada unesem broj decimalnih mesta 3 ili 4 ili 5. kada izaberem broj decimalnih mesta 1 prikaz u excel-u je 34.563,90. prikaz za separatorom i decimalama je meni uredu, ali zasto ne prikazuje decimalana mesta veca od 2
[ gogi100 @ 02.05.2022. 16:12 ] @
isti takav problem imam i sa procentima
[ gogi100 @ 02.05.2022. 17:53 ] @
Primetio sam kad unesem broj decimalnih mesta. Ovaj broj ustvari radi zaokruzivanje na taj broj decimalnih mesta, a a prikazuje uvek 2 decimalna mesta
[ Jpeca @ 04.05.2022. 20:49 ] @
Funkcija FomatNumber koju si koristio u kodu pretvara broj ( iz ćelije) u tekst sa odgovarajućim brojem decimalnih mesta.
U slučaju da je broj decimalnih mesta manji od onoga u broju vrši se kao što ti kažeš zaokruživanje. U slučaju da je broj decimalnih mesta veći ili jednak onom u broju ne menja se broj.
E sad šta se dalje dešava.
U tu ćeliju unosi se tako formatiran tekst. Za ispis će se primentii aktivni format u ćeliji - General ako nije menjano. Tako će se tekst ispisati sa onolko decimalnih mesta koliko ima formatiran tekst.
Verovatno je kod tebe već formtirana ćelija da ima dva decimalna mesta, pa se to primenjuje. Dakle, kod koji si postavio ne menja format ćelije. Format ćelije možeš da promeniš sa linijom koja je zakomentarisana
Code:
  Selection.NumberFormat = "#,###0.00"


gde treba uneti broj 0 iza zareza po potrebi npr pomoću string funkcije

Code:
Selection..NumberFormat = "#,###." & String(brojdecimalnihmesta, "0")


Što se tiče samog ispisa ovo ti je sve što ti treba. Ako ti treba i zaokruživanje možeš koristiti Round funkciju
Code:
z.Value  = Round(z.Value, brojdecimalnihmesta) 





[ gogi100 @ 09.05.2022. 06:40 ] @
Resio problem, po vasem uputstvu
[ gogi100 @ 09.05.2022. 11:07 ] @
Pokusao sam makro da primenim na drugom racunaru i sad stalno kad se uradi formatiranje prikazuje u formatiranim celijama poruku 'this cell is formatted as text....' ja zelim da to bude broj. Na mom racunaru to prikazuje kao broj
[ Jpeca @ 10.05.2022. 07:43 ] @
Ako na jednom računaru radi a na drugom ne proveri postavke za decimalni separator na nivou operativnog sistema i excela
[ gogi100 @ 10.05.2022. 07:53 ] @
Ubacio sam u kod samo

Code:

z = z*1
z = z.Value


i na spornom kompu proradilo