Ir para conteúdo
Fórum Script Brasil
  • 0

Existe Variável De Sessão No Vba Como Existe No Asp?


[ GuTo ]

Pergunta

Tenho uma coluna com validação de dados, onde é exibido uma lista dos itens que podem ser escolhidos.

Quando algo é selecionado, abro um userForm de acordo com a opção escolhida.

Neste userForm, deverão ser respondidas algumas perguntas simples, como sim ou não e etc, cada resposta terá um número de pontos e no final fazendo o somatório e vendo a faixa do total de pontos saberei (em termos) um dado importante (que no caso é a complexidade, mas isso não nos importa para a resolução, hehe)

Logo, o que preciso: depois da pessoa "sair" do userForm, saber informar a linha correta em que foi "chamado" o form e atribuir um valor a coluna de complexidade, mas não sei como capturar o valor da linha quando a pessoa fechar o form. Sei só quando ela abre. Preciso fazer algo que funcione e não dê margens para erros.

Nos exemplos a seguir, nas imagens, usei a LINHA 7, COLUNA C ($C$7).

Imagem 01:

img01fe6.jpg

Imagem 02:

img02ds6.jpg

Imagem 03:

img03dr9.jpg

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Graymalkin,

Fiz o seguinte: Quando abro o form, guardo o número da linha, até aí beleza.

Eu só não tava sabendo como retornar algum valor que estava sendo gerado dentro do form.

O que fiz?

O que calculei no form guardei em uma célula o resultado; Com isso, posso fechar o form e em seguida na função que chama o form chamo um código que pega o valor da tal célula, insere ali na coluna complexidade dessa planilha e, já apaga o valor da tal célula, foi o jeito que arranjei.

Essa célula tá funcionando com uma session pra mim, ueueheuhe.

Foi o jeito.

Nela eu guardo se a coluna é a: D, E, F, G ou H.

A linha, como falei, já guardo antes de abrir um form...

Vou exemplificar com código pra ficar mais claro...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nLinha, nColuna, sValor
    nLinha = Target.Row
    nColuna = Target.Column
    '-------------------------
    If nColuna = 3 Then
               '----- USANDO UM FORM PARA CADA FUNCIONALIDADE/TIPO
                Select Case sValor
                    Case "Cadastro"
                        frmCadastro.show
                    Case "Controle de Acesso"
                        frmControleDeAcesso.show
                    Case "Relatório"
                        frmRelatorio.show
                    Case "Página Dinâmica"
                        frmPaginaDinamica.show
                    Case "Interação de Sistemas"
                        frmInteracaoDeSistemas.show
                    Case "Página HTML"
                        frmPaginaHTML.show
                    Case "Animação Flash"
                        frmAnimacaoFlash.show
                    Case Else
                        MsgBox "Selecione um tipo"
                End Select
                Dim sValorColunaComplexidade
                sValorColunaComplexidade = Range("valorColunaComplexidadeAtual").Value
                If sValorColunaComplexidade <> "" Then
                    Range("D" & nLinha, "H" & nLinha).Value = ""
                    Range(sValorColunaComplexidade & nLinha) = 1
                    Range("valorColunaComplexidadeAtual").Clear
                End If
    End If
end function

Acho que tu sacou. hehe

Se souberes como poderia otimizar isso, hehe, agradeço.

Ou se souberes algo parecido com o: Server.MapPath(".") do ASP que retorna o diretório atual da página que está sendo lida. :)

valeu mesmo assim brow

abraços

Editado por [ GuTo ]
Link para o comentário
Compartilhar em outros sites

  • 0
Guest RENATO LACERDA

ThisWorkbook.Path

JUST THAT!

Graymalkin,

Fiz o seguinte: Quando abro o form, guardo o número da linha, até aí beleza.

Eu só não tava sabendo como retornar algum valor que estava sendo gerado dentro do form.

O que fiz?

O que calculei no form guardei em uma célula o resultado; Com isso, posso fechar o form e em seguida na função que chama o form chamo um código que pega o valor da tal célula, insere ali na coluna complexidade dessa planilha e, já apaga o valor da tal célula, foi o jeito que arranjei.

Essa célula tá funcionando com uma session pra mim, ueueheuhe.

Foi o jeito.

Nela eu guardo se a coluna é a: D, E, F, G ou H.

A linha, como falei, já guardo antes de abrir um form...

Vou exemplificar com código pra ficar mais claro...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nLinha, nColuna, sValor
    nLinha = Target.Row
    nColuna = Target.Column
    '-------------------------
    If nColuna = 3 Then
               '----- USANDO UM FORM PARA CADA FUNCIONALIDADE/TIPO
                Select Case sValor
                    Case "Cadastro"
                        frmCadastro.show
                    Case "Controle de Acesso"
                        frmControleDeAcesso.show
                    Case "Relatório"
                        frmRelatorio.show
                    Case "Página Dinâmica"
                        frmPaginaDinamica.show
                    Case "Interação de Sistemas"
                        frmInteracaoDeSistemas.show
                    Case "Página HTML"
                        frmPaginaHTML.show
                    Case "Animação Flash"
                        frmAnimacaoFlash.show
                    Case Else
                        MsgBox "Selecione um tipo"
                End Select
                Dim sValorColunaComplexidade
                sValorColunaComplexidade = Range("valorColunaComplexidadeAtual").Value
                If sValorColunaComplexidade <> "" Then
                    Range("D" & nLinha, "H" & nLinha).Value = ""
                    Range(sValorColunaComplexidade & nLinha) = 1
                    Range("valorColunaComplexidadeAtual").Clear
                End If
    End If
end function

Acho que tu sacou. hehe

Se souberes como poderia otimizar isso, hehe, agradeço.

Ou se souberes algo parecido com o: Server.MapPath(".") do ASP que retorna o diretório atual da página que está sendo lida. :)

valeu mesmo assim brow

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
ThisWorkbook.Path

JUST THAT!

Thanks Sir. ;)

E não tem como passar um argumento/parâmetro para um form?

tipow... frmCadastro.show(argumento1,argumento2)

tipo isso. :P

Editado por [ GuTo ]
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...