Gtsalikis, Obrigado pelas macros, agradeço por demais sua ajuda. Me desculpe se não expliquei como deveria. Acabei encontrando uma forma dessas duas macros funcionarem juntas.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
My_Sub_A Target
My_Sub_B Target
End Sub
Private Sub My_Sub_A(ByVal Target As Range)
Dim valor As String
Dim i As Long
Dim j As Long
Dim l As Long
Dim k As Long
Dim h As Long
Dim qtd As Long
Dim destin() As Range
Dim intervalo() As Range
j = 4 'Coloque aqui a quantidade de intervalos que vai usar
ReDim intervalo(1 To j) As Range
ReDim destin(1 To j) As Range
Set intervalo(1) = Range("H5:I7") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(2) = Range("H9:I11") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(3) = Range("K5:L7") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(4) = Range("K9:L11") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set destin(1) = Range("C5") 'coloque aqui a célula correspondente ao intervalo
Set destin(2) = Range("C7") 'coloque aqui a célula correspondente ao intervalo
Set destin(3) = Range("C9") 'coloque aqui a célula correspondente ao intervalo
Set destin(4) = Range("C11") 'coloque aqui a célula correspondente ao intervalo
For i = 1 To j
If Not Intersect(ActiveCell, intervalo(i)) Is Nothing Then GoTo DISTRIBUIR
Next i
Exit Sub
DISTRIBUIR:
qtd = 3 'digite aqui a quantidade de dígitos que quer considerar
k = destin(i).Row
h = destin(i).Column
valor = Replace(Format(CStr(ActiveCell.Value2), "0.00"), ",", "")
j = qtd - Len(valor)
l = 1
For i = h To qtd + h
If i < j Then
Cells(k, i).ClearContents
Else
Cells(k, i).Value2 = Mid(valor, l, 1)
l = l + 1
End If
Next i
End Sub
Private Sub My_Sub_B(ByVal Target As Range)
Dim valor As String
Dim i As Long
Dim j As Long
Dim l As Long
Dim k As Long
Dim h As Long
Dim qtd As Long
Dim destin() As Range
Dim intervalo() As Range
j = 4 'Coloque aqui a quantidade de intervalos que vai usar
ReDim intervalo(1 To j) As Range
ReDim destin(1 To j) As Range
Set intervalo(1) = Range("H5:I7") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(2) = Range("H9:I11") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(3) = Range("K5:L7") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set intervalo(4) = Range("K9:L11") 'Para cada novo intervalo, repita essa linha, e aumente um numero no contador do intervalo
Set destin(1) = Range("C13") 'coloque aqui a célula correspondente ao intervalo
Set destin(2) = Range("C15") 'coloque aqui a célula correspondente ao intervalo
Set destin(3) = Range("C17") 'coloque aqui a célula correspondente ao intervalo
Set destin(4) = Range("C19") 'coloque aqui a célula correspondente ao intervalo
For i = 1 To j
If Not Intersect(ActiveCell, intervalo(i)) Is Nothing Then GoTo DISTRIBUIR
Next i
Exit Sub
DISTRIBUIR:
qtd = 3 'digite aqui a quantidade de dígitos que quer considerar
k = destin(i).Row
h = destin(i).Column
valor = Replace(Format(CStr(ActiveCell.Value2), "0.00"), ",", "")
j = qtd - Len(valor)
l = qtd
For i = h To qtd + h
If i < j Then
Cells(k, i).ClearContents
Else
Cells(k, i).Value2 = Mid(valor, l, 1)
l = l - 1
If l <= 0 Then Exit For
End If
Next i
End Sub
Att.
acarloos
Postado : 07/02/2015 11:53 am