Macro que envía email informando valor en porcentaje

Estimado Deathwatch, hace un tiempo solicité ayuda y me respondiste de forma clara y oportuna, esta vez quisiera me ayudaras a resolver lo siguiente. He desarrollado una macro para que envíe vía email un valor que está expresado en %. Denominé la celda donde está el valor como "tabla1" y esta denominación va en el strbody del mensaje del email. Sin embargo este aparece como número y no como porcentaje (en vez de aparecer 9,41% aparece 0,041).
La macro es la siguiente:
Sub email_alerta()
'
'Envía aviso cuando se ha excedido el límite superior
    Range("I47").NumberFormat = "00%"
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim tabla1 As Range
    Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    Set tabla1 = Range("I47")
    strbody = "srs" & vbNewLine & vbNewLine & _
              "El control de plagas detectó que el área que usted administra presentó un incremento del consumo de cebos. El porcentaje de consumo asciende a: " & tabla1 & vbNewLine & _
             "atentamente, Administrador"
    On Error Resume Next
    With OutMail
        .To = ""
        .CC = ""
        .BCC = ""
        .Subject = "Control de roedores"
        .Body = strbody
        .Send
    End With
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub
A la espera de tu valiosa ayuda le saluda, donghi.

1 respuesta

Respuesta
1
Que hay
En la celda I47 que tienes, un valor en porcentaje o un numero, o mejor dicho, ¿la celda tiene formato de por ciento?
Estimado Deathwatch, he probado ambas formas:
1. Dando formato de número a la celda I47 y solicitando a través de; Range("I47").NumberFormat = "00%" cambiar a porcentaje pero no obtengo el número expresado en porcentaje (ej: 0,0491 en vez de 4,91%)
2. Eliminando la primera línea y dando formato de porcentaje a la celda I47 pero obtengo un número con muchos decimales expresado en potencia (ej: 4,913.. E-2)
Encontré la forma como solicitar que se expresen sólo con dos decimales mediante:
Range("I47").Select
Selection.NumberFormat = "0.00%"
Range("I47").Activate
ActiveCell.Value = Application.WorksheetFunction.RoundUp(ActiveCell, 3)
Pero lo que obtengo es: 0,049 sin que se expresen en porcentaje
Como vez, sigo con el mismo problema.
Saludos
Donghi
Ok, no he terminado de entender que tienes en la celda I47
Por ejemplo, tienes:
491
4,91
4.91
4,91% (teniendo la celda, formato de texto)
4, 91% (teniendo el valor 4,91 y el formato de la celda, en por ciento)
A todo esto, mi pregunta es:
Si tienes por ejemplo 4,91 (teniendo la celda, formato de texto), por que no pasar la cadena de texto 4,91 y juntarle el signo, así:
Set tabla1 = str(Range("I47").Value) & "%"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas