FOR CASE IF... QUAL USAR?
Galera preciso trocar esse código mostruoso por um que busque na array [Ô]User[Ô] User(i) as iniciais dos nomes...
a lista já está criada só preciso substituir esse código por outro...
Antigo código:
Cells(ActiveCell.Row, 10).Select [ô][ô][ô][ô][ô][ô]seleciona a célula desejada
If Application.ActiveCell = [Ô]AL[Ô] Or Application.ActiveCell = [Ô]BE[Ô] Or Application.ActiveCell = [Ô]CL[Ô] Or Application.ActiveCell = [Ô]DA[Ô] Or Application.ActiveCell = [Ô]DE[Ô] Or Application.ActiveCell = [Ô]ED[Ô] Or Application.ActiveCell = [Ô]FR[Ô] Or Application.ActiveCell = [Ô]LE[Ô] Or Application.ActiveCell = [Ô]LU[Ô] Or Application.ActiveCell = [Ô]MA[Ô] Or Application.ActiveCell = [Ô]MO[Ô] Or Application.ActiveCell = [Ô]CA[Ô] Or Application.ActiveCell = [Ô]ML[Ô] Or Application.ActiveCell = [Ô]FT[Ô] Or Application.ActiveCell = [Ô]MF[Ô] Or Application.ActiveCell = [Ô]JA[Ô] Or Application.ActiveCell = [Ô]RB[Ô] Or Application.ActiveCell = [Ô]JP[Ô] Or Application.ActiveCell = [Ô]AJ[Ô] Or Application.ActiveCell = [Ô]TM[Ô] Or Application.ActiveCell = [Ô]SE[Ô] Or Application.ActiveCell = [Ô]LF[Ô] Or Application.ActiveCell = [Ô]DL[Ô] Or Application.ActiveCell = [Ô]CC[Ô] Or Application.ActiveCell = [Ô]SO[Ô] Or Application.ActiveCell = [Ô]CJ[Ô] Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]fim do if
O novo creio eu que fique mais ou menos assim:
for i = 1 to Ubound(User) [ô][ô][ô][ô][ô]conta de 1 até a quantidade de items no User[ô][ô][ô][ô] no caso 18
If Application.ActiveCell = User(i) Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô]fim do if
next [ô][ô][ô][ô][ô][ô][ô][ô]loop iupiiii
a lista já está criada só preciso substituir esse código por outro...
Antigo código:
Cells(ActiveCell.Row, 10).Select [ô][ô][ô][ô][ô][ô]seleciona a célula desejada
If Application.ActiveCell = [Ô]AL[Ô] Or Application.ActiveCell = [Ô]BE[Ô] Or Application.ActiveCell = [Ô]CL[Ô] Or Application.ActiveCell = [Ô]DA[Ô] Or Application.ActiveCell = [Ô]DE[Ô] Or Application.ActiveCell = [Ô]ED[Ô] Or Application.ActiveCell = [Ô]FR[Ô] Or Application.ActiveCell = [Ô]LE[Ô] Or Application.ActiveCell = [Ô]LU[Ô] Or Application.ActiveCell = [Ô]MA[Ô] Or Application.ActiveCell = [Ô]MO[Ô] Or Application.ActiveCell = [Ô]CA[Ô] Or Application.ActiveCell = [Ô]ML[Ô] Or Application.ActiveCell = [Ô]FT[Ô] Or Application.ActiveCell = [Ô]MF[Ô] Or Application.ActiveCell = [Ô]JA[Ô] Or Application.ActiveCell = [Ô]RB[Ô] Or Application.ActiveCell = [Ô]JP[Ô] Or Application.ActiveCell = [Ô]AJ[Ô] Or Application.ActiveCell = [Ô]TM[Ô] Or Application.ActiveCell = [Ô]SE[Ô] Or Application.ActiveCell = [Ô]LF[Ô] Or Application.ActiveCell = [Ô]DL[Ô] Or Application.ActiveCell = [Ô]CC[Ô] Or Application.ActiveCell = [Ô]SO[Ô] Or Application.ActiveCell = [Ô]CJ[Ô] Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]fim do if
O novo creio eu que fique mais ou menos assim:
for i = 1 to Ubound(User) [ô][ô][ô][ô][ô]conta de 1 até a quantidade de items no User[ô][ô][ô][ô] no caso 18
If Application.ActiveCell = User(i) Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô]fim do if
next [ô][ô][ô][ô][ô][ô][ô][ô]loop iupiiii
faz assim usando um mid
Dim Iniciais As String
Iniciais = [Ô]ALBECLDADEEDFRLELUMAMOCAMLFTMFJARBJPAJTMSELFDLCCSOCJ[Ô]
For I = 1 to Len(Iniciais) Step 2
If Application.ActiveCell = Mid(Iniciais,I,2) Or Application.ActiveCell = [Ô][Ô] Then
[ô] faz o que vc deseja
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô]
End If
Mas assim continua do mesmo jeito, sempre que entrar outra pessoa eu vou ter que editar o código e adicionar a inicial.
Na array [Ô]User[Ô] ele puxa de outra tabela as iniciais criando o array User={AL,BE,CL,DA,DE,ED,FR,...,CJ}
E quando alguém adiciona uma nova célula com as iniciais o código já vai assumir como um novo usuário sem ter que editar o código e inserir a inicial.
Valeu pela dica, mas isso ai o meu código faz também.
Na array [Ô]User[Ô] ele puxa de outra tabela as iniciais criando o array User={AL,BE,CL,DA,DE,ED,FR,...,CJ}
E quando alguém adiciona uma nova célula com as iniciais o código já vai assumir como um novo usuário sem ter que editar o código e inserir a inicial.
Valeu pela dica, mas isso ai o meu código faz também.
Alguem tem alguma idéia de como fazer esse [Ô]for[Ô] funcionar??
User = Array(AJ,AL,CA,CL,DA,DE,ED,FR,FT,JA,LU,MF,MO,RB,SE,TQ,CF)
for i = 1 to Ubound(User) [ô][ô][ô][ô][ô]conta de 1 até a quantidade de items no User[ô][ô][ô][ô] no caso 18
If Application.ActiveCell = User(i) Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô]fim do if
next [ô][ô][ô][ô][ô][ô][ô][ô]loop iupiiii
Essa rotina no primeiro loop já deleta tudo...
User = Array(AJ,AL,CA,CL,DA,DE,ED,FR,FT,JA,LU,MF,MO,RB,SE,TQ,CF)
for i = 1 to Ubound(User) [ô][ô][ô][ô][ô]conta de 1 até a quantidade de items no User[ô][ô][ô][ô] no caso 18
If Application.ActiveCell = User(i) Or Application.ActiveCell = [Ô][Ô] Then [ô][ô][ô][ô][ô][ô][ô][ô][ô]verifica se contem as iniciais ou espaço em branco, se contem não faz nada
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô][ô]se não contem exclui a célula
End If [ô][ô][ô][ô][ô]fim do if
next [ô][ô][ô][ô][ô][ô][ô][ô]loop iupiiii
Essa rotina no primeiro loop já deleta tudo...
Isso é VBA? Tipo, é o código em uma planilha do excel?
tenta assim..
Citação:
Sheets(1).Range([Ô]A1[Ô]).Select
Select Case Selection
Case [Ô]AJ[Ô], [Ô]AL[Ô], [Ô]CA[Ô], [Ô]CL[Ô], [Ô]DA[Ô], [Ô]DE[Ô], [Ô]ED[Ô], [Ô]FR[Ô], [Ô]FT[Ô], [Ô]JA[Ô], [Ô][Ô]
MsgBox [Ô]Texto localizado.[Ô]
Case Else
Selection = [Ô][Ô]
End Select
Olá Kerplunk,
é VBA sim.
O meu primeiro exemplo funciona legal o exemplo do MARCELO-TREZE também funciona.
Só que o array [Ô]User[Ô] já está sendo alimentado automaticamente por uma outra rotina, então sempre que o usuário adicionar uma inicial na planilha de [Ô]Funcionarios[Ô] a rotina já puxa esse dado novo e adiciona no array [Ô]User[Ô].
No meu primeiro exemplo e no exemplo do MARCELO-TREZE eu vou ter que editar o código e adicionar manualmente toda vez que uma nova pessoa tiver que entrar/sair da lista.
flw,
é VBA sim.
O meu primeiro exemplo funciona legal o exemplo do MARCELO-TREZE também funciona.
Só que o array [Ô]User[Ô] já está sendo alimentado automaticamente por uma outra rotina, então sempre que o usuário adicionar uma inicial na planilha de [Ô]Funcionarios[Ô] a rotina já puxa esse dado novo e adiciona no array [Ô]User[Ô].
No meu primeiro exemplo e no exemplo do MARCELO-TREZE eu vou ter que editar o código e adicionar manualmente toda vez que uma nova pessoa tiver que entrar/sair da lista.
flw,
TeraBytes
assim
de onde vc pretende puxar as iniciais de uma celula do excel seria isso?
assim
de onde vc pretende puxar as iniciais de uma celula do excel seria isso?
DEKINHO,
vlw a dica, mas assim também fica na mesma... Eu vou ter que editar o código para adicionar novos funcionários...
com esse código eu crio a array User da planilha que está em anexo. Com isso eu preciso verificar fazer o que todos os exemplos de vocês fazem... mas ele tem que ler o array User.
No arquivo anexado a coluna [Ô]C[Ô] e [Ô]D[Ô] vão ficar acultas, pq não tem importância para o usuário, nelas eu uso o concatenar pra ficar bunitinho. Na coluna [Ô]A[Ô] o usuário adiciona as iniciais, na [Ô]B[Ô] o nome.
[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]botão
Private Sub CommandButton1_Click()
Sheets([Ô]Funcionarios[Ô]).Select
User = CriaListaUser(Range([Ô]D:D[Ô]), True) [ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]pega os item da coluna D:D e cria o array User
UserNome = CriaListaUser(Range([Ô]C:C[Ô]), True)
End Sub
[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]rotina
Private Function CriaListaUser(InputRange As Range, _
HorizontalList As Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As Variant
Application.Volatile
On Error Resume Next
For Each cl In InputRange
If cl.Formula <> [Ô][Ô] Then
cUnique.Add cl.Value, CStr(cl.Value)
End If
Next cl
CriaListaUser = [Ô][Ô]
If cUnique.Count > 0 Then
ReDim uList(1 To cUnique.Count)
For i = 1 To cUnique.Count
uList(i) = cUnique(i)
Next i
CriaListaUser = uList
If Not HorizontalList Then
CriaListaUser = _
Application.WorksheetFunction.Transpose(CriaListaUser)
End If
End If
On Error GoTo 0
End Function
vlw a dica, mas assim também fica na mesma... Eu vou ter que editar o código para adicionar novos funcionários...
com esse código eu crio a array User da planilha que está em anexo. Com isso eu preciso verificar fazer o que todos os exemplos de vocês fazem... mas ele tem que ler o array User.
No arquivo anexado a coluna [Ô]C[Ô] e [Ô]D[Ô] vão ficar acultas, pq não tem importância para o usuário, nelas eu uso o concatenar pra ficar bunitinho. Na coluna [Ô]A[Ô] o usuário adiciona as iniciais, na [Ô]B[Ô] o nome.
[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]botão
Private Sub CommandButton1_Click()
Sheets([Ô]Funcionarios[Ô]).Select
User = CriaListaUser(Range([Ô]D:D[Ô]), True) [ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]pega os item da coluna D:D e cria o array User
UserNome = CriaListaUser(Range([Ô]C:C[Ô]), True)
End Sub
[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]rotina
Private Function CriaListaUser(InputRange As Range, _
HorizontalList As Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As Variant
Application.Volatile
On Error Resume Next
For Each cl In InputRange
If cl.Formula <> [Ô][Ô] Then
cUnique.Add cl.Value, CStr(cl.Value)
End If
Next cl
CriaListaUser = [Ô][Ô]
If cUnique.Count > 0 Then
ReDim uList(1 To cUnique.Count)
For i = 1 To cUnique.Count
uList(i) = cUnique(i)
Next i
CriaListaUser = uList
If Not HorizontalList Then
CriaListaUser = _
Application.WorksheetFunction.Transpose(CriaListaUser)
End If
End If
On Error GoTo 0
End Function
é isso ta ficando meio enrolado, mas vou tentar explicar uma idéia, seria esta:
faça um for next, em uma coluna onde serão sempre acrecentadas as iniciais.
para ficar algo dinamico, faça este for lendo linha a linha até encontrar uma celula em branco, e parar.
neste mesmo for monte uma string e pronto
exemplo
Dim Iniciais As String
For f=1 to 10000 'irá contar mil linhas se houver
If Celula(f,1) <> [Ô][Ô] then
Iniciais = Iniciais & conteudo da celula celecionada
else
Exit For
End if
Next f
For I = 1 to Len(Iniciais) Step 2
If Application.ActiveCell = Mid(Iniciais,I,2) Or Application.ActiveCell = [Ô][Ô] Then
[ô] faz o que vc deseja
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô]
End If
acima não lembro como se pega a cellula especifica então coloquei celula, espero que entenda
na teoria o codigo acima montara a string iniciais assim
Iniciais = [Ô]ALBECLDADEEDFRLELUMAMOCAMLFTMFJARBJPAJTMSELFDLCCSOCJ[Ô]
se for adicionado mais uma linha exemplo BP[Ô]
a string ser'[a alterada para isto
Iniciais = [Ô]ALBECLDADEEDFRLELUMAMOCAMLFTMFJARBJPAJTMSELFDLCCSOCJ[txt-color=#e80000]BP[/txt-color][Ô]
espero que vc tenha entendido minha lógica
faça um for next, em uma coluna onde serão sempre acrecentadas as iniciais.
para ficar algo dinamico, faça este for lendo linha a linha até encontrar uma celula em branco, e parar.
neste mesmo for monte uma string e pronto
exemplo
Dim Iniciais As String
For f=1 to 10000 'irá contar mil linhas se houver
If Celula(f,1) <> [Ô][Ô] then
Iniciais = Iniciais & conteudo da celula celecionada
else
Exit For
End if
Next f
For I = 1 to Len(Iniciais) Step 2
If Application.ActiveCell = Mid(Iniciais,I,2) Or Application.ActiveCell = [Ô][Ô] Then
[ô] faz o que vc deseja
Else
Selection.Delete Shift:=xlToLeft [ô][ô][ô][ô][ô][ô][ô]
End If
acima não lembro como se pega a cellula especifica então coloquei celula, espero que entenda
na teoria o codigo acima montara a string iniciais assim
Iniciais = [Ô]ALBECLDADEEDFRLELUMAMOCAMLFTMFJARBJPAJTMSELFDLCCSOCJ[Ô]
se for adicionado mais uma linha exemplo BP[Ô]
a string ser'[a alterada para isto
Iniciais = [Ô]ALBECLDADEEDFRLELUMAMOCAMLFTMFJARBJPAJTMSELFDLCCSOCJ[txt-color=#e80000]BP[/txt-color][Ô]
espero que vc tenha entendido minha lógica
Tópico encerrado , respostas não são mais permitidas