ola mauro
Let_Num_Col é uma função que transforma letra de coluna em numero e numero de coluna em letra
Public Function Let_Num_Col(ByVal Numero_ou_Letra_Coluna As Variant) As Variant ' '-------( numero em letra e Letra em numerode coluna)
Dim CLx As String
If Numero_ou_Letra_Coluna > 0 And Numero_ou_Letra_Coluna < Columns.Count Then
CLx = Cells(1, Numero_ou_Letra_Coluna).Address
Let_Num_Col = Mid(CLx, InStr(CLx, "$") + 1, InStr(2, CLx, "$") - 2)
Else
Let_Num_Col = Cells(1, Numero_ou_Letra_Coluna).Column
End If
End Function
Cq é utilizado em varias outras macros com o mesmo conceito informar largura do setor
normalmente ela é definida em uma macro junto de outras variaveis e utilizada em outra macro
mas já fiz varios teste e as unicas linhas que modificam a variavel é
Range(Cells(l1, c2), Cells(l1, c2 + 1)).Value2 = .Range(.Cells(L, c1), .Cells(L, c1 + 1)).Value2
Range(Cells(l1, c2), Cells(l1, c2 + Cq1)).Value2 = .Range(.Cells(L, c1), .Cells(L, c1 + Cq1)).Value2
eu coloquei um msgbox CQ para mostrar o valor da variavel antes e depois
antes o valor está normal e é aplicado corretamente a range
depois o valor vai para 31
já tive problemas com nomes aqui, que eu não sabia que existia no vba, e apenas com alguns parâmetros dava valores errôneos
mas cq não achei nenhuma referencia
assim está sendo definida a variavel no modulo
Public nST As String 'indica Nome do Setor
Public nSTo As String 'indica Nome do Setor de ORIGEM
Public Cq As Long 'indica quantidade de colunas de valores do setor
Public CqT As Long 'indica quantidade Total de colunas do setor
uma das macros que utiliza o valor de cq para redimensionar os setores
e essa nunca me deu problemas
Sub ColunasN(ByVal Quantidade_de_Colunas As Long, Optional Nome_AbA As String) '(ByVal Nome_SETOR As String,
If Limit = 1 Then MsgBox "Execução Proibida": Exit Sub
If Nome_AbA = "" Then Nome_AbA = ActiveSheet.Name
Dim Ma As Long, N As Long
Ma = Quantidade_de_Colunas
With Sheets(Nome_AbA)
.Range(TabelaSetores).Calculate
If Limit(1) <> "AUXIa" Then Desformata
If Ma > 2 Then
Cf1 = Let_Num_Col(Cf) 'Range(Cf & "1").Column
If Cq < Ma Then
N = Ma - Cq
.Range(.Cells(6, Cf1 + 1), .Cells(1, Cf1 + N)).EntireColumn.Insert
.Range(.Cells(6, Cf1 - 1), .Cells(12, Cf1)).AutoFill Destination:=.Range(.Cells(6, Cf1 - 1), .Cells(12, Cf1 + N)), Type:=xlFillDefault
Cf = Letra_Col(Cf1 + N): Fc = Letra_Col(Cf1 + N + 1)
End If
If Cq > Ma Then
N = Cq - Ma - 1
.Range(.Cells(6, Cf1 - N), .Cells(1, Cf1)).EntireColumn.Delete
Cf = Letra_Col(Cf1 - (N + 1)): Fc = Letra_Col(Cf1 - N)
End If
Cq = Ma
End If
.Range(TabelaSetores).Calculate
If Limit(1) <> "AUXIa" Then Reformata
End With
End Sub
Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.
"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"
Postado : 07/12/2014 10:09 am