Notifications
Clear all

Coluna = Coluna + 1?

4 Posts
2 Usuários
0 Reactions
1,222 Visualizações
(@tomazcpv)
Posts: 0
New Member
Topic starter
 

Galera tenho uma variavel do tipo Int que serve para controlar colunas:

If nColuna = 0 Then coluna = "D"
If nColuna = 1 Then coluna = "N"
If nColuna = 2 Then coluna = "S"

Eu uso essa variável para setar a posição que um valor será colado:

O que eu preciso é o seguinte:

Se o nColuna valer "D", preciso que no proximo bloco ele valha " E " e no proximo "F" e assim em diante, como fazer isso no vba???

Exemplo:
If ThisWorkbook.Sheets("Questionário").CheckBox1.Value = True Then
ThisWorkbook.Sheets("Respostas").Range(nColuna & z).Value = 1
Else
ThisWorkbook.Sheets("Respostas").Range(nColuna & z).Value = 0
End If

(no bloco abaixo meu nColuna tem que valer "E", teria de ser algo como nColuna+1, porém sei q isso não funciona para String.)
If ThisWorkbook.Sheets("Questionário").CheckBox2.Value = True Then
ThisWorkbook.Sheets("Respostas").Range("E" & z).Value = 1
Else
ThisWorkbook.Sheets("Respostas").Range("E" & z).Value = 0
End If

 
Postado : 25/06/2015 10:52 pm
(@edcronos)
Posts: 1006
Noble Member
 

para trabalhar com colunas o ideal é trabalhar com elas numerica

A=1, B=2

em vez de range use cells
range("A" & 10)= A10
Cells(10,1)=A10

mas repare que a linha em cells vem antes da coluna "não me pergunte o pq disso"

então para incrementar colunas é só somar

coluna = 1 ' "A"
cells( 1 , coluna ) ="nome"
coluna = coluna + 1 <--------------- ' faz o incremento da coluna A,B,C,D,...

para pegar uma range inteira com variação de coluna se usa cells dentro de range

range(cells(1,1), cells(10,2)
= A1:B10

se vc tiver uma coluna e quer converter em numero é só usar
colAlfa="AC"
coluna=cells(1,colAlfa).column

 
Postado : 26/06/2015 5:29 am
(@edcronos)
Posts: 1006
Noble Member
 

continuando com a aula

converter coluna numérica em letra de coluna
isso já é mais complicado e cada um tem seus metodo

eu uso uma função personalizada em minhas macros

Public Function Letra_Col(ByVal Numero_Coluna As Long) As String     ' '-------(Transforma numero  em letra de coluna)
    Dim CLx As String
    CLx = Cells(1, Numero_Coluna).Address
    Letra_Col = Mid(CLx, InStr(CLx, "$") + 1, InStr(2, CLx, "$") - 2)
End Function

Letra_Col(3)
ela vai retornar C
pode usar tbm no excel direto ,

se estiver com preguiça mental pode somar letra direto

Public Function Soma_LetraCol(ByVal letra_Coluna As String, valor As Long) As String ' ----( faz incremento de letras de coluna )
    Dim CLx As String
    Col_soma = Cells(1, letra_Coluna).Column + valor
    CLx = Cells(1, Col_soma).Address
    Soma_LetraCol = Mid(CLx, InStr(CLx, "$") + 1, InStr(2, CLx, "$") - 2)
End Function

Soma_LetraCol("B",3)
vao retornar "E"

nessas funções se pode usar variaveis

sub test()
coli="A"
for n= 0 to 10

range(Soma_LetraCol(coli,n) & 1).value2 = Soma_LetraCol(coli,n)

next
end sub
 
Postado : 26/06/2015 5:46 am
(@tomazcpv)
Posts: 0
New Member
Topic starter
 

Obrigado Ed, utilizei ao inves de Range , "CELLS" com cells consegui controlar as colunas, valewwwwwwwwww!!!!

 
Postado : 29/06/2015 11:12 am