Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Controllo decimali in excel

    Buongiorno a tutti/e, mi chiamo Tomas e mi sono appena iscritto al forum.
    Vorrei un vostro aiuto se possibile.
    In un foglio di lavoro Excel, nell'intervallo B1:B400 voglio che gli utilizzatori possano inserire solo numeri con 2 cifre decimali, in caso contrario vorrei far comparire un messaggio pop up che spieghi l'errore fatto.
    E' possibile?
    Grazie a chi mi vorrà aiutare.

    PS: uso excel 2010

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Potresti scrivere una macro da eseguire nel momento in cui vengono modificate le celle nel range indicato.
    Questo è un esempio:
    codice:
    Private Sub Worksheet_Change(ByVal Target As Range)
      Const RigaInizio As Integer = 1
      Const RigaFine As Integer = 400
      Const CifreDecimali As Integer = 2
      Dim ContRiga As Integer
      Dim Cella As String
      Dim Decimali As String
      
        If Not Intersect(Target, Me.Range("B1:B400")) Is Nothing Then
          For ContRiga = RigaInizio To RigaFine
            Cella = Cells(ContRiga, 2).Text
            If IsNumeric(Cella) = False Then
              Me.Cells(ContRiga, 2).Select
              MsgBox "Valore non numerico", vbInformation, "Cella B" & CStr(ContRiga)
            Else
              If InStr(1, Cella, ",") > 1 Then
                Decimali = Mid(Cella, InStr(1, Cella, ",") + 1)
                If Len(Decimali) > CifreDecimali Then
                  Me.Cells(ContRiga, 2).Select
                  MsgBox "Numero cifre decimali superiori al limite (" & CStr(CifreDecimali) & ")", vbInformation, "Cella B" & CStr(ContRiga)
                End If
              End If
            End If
          Next ContRiga
        End If
    End Sub
    ... e non usare while wend è una sintassi deprecata

  3. #3
    Grazie Mabi.
    Ho risolto con:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B6:B400")) Is Nothing Then
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Target = Round(Target.Value, 2)
    End If
    Application.EnableEvents = True
    End Sub

  4. #4
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Quote Originariamente inviata da aletomas Visualizza il messaggio
    Buongiorno a tutti/e, mi chiamo Tomas e mi sono appena iscritto al forum.
    ...in caso contrario vorrei far comparire un messaggio pop up che spieghi l'errore fatto.
    Prego... ma il messaggio di cui parlavi?
    ... e non usare while wend è una sintassi deprecata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.