Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Setar flag em um formulário
Setar flag em um formulário
Pessoal,
Estou com problema que deve ser bem simples para os craques desse fórum e peço ajuda a esse time...
Tenho uma planilha que chama um formulário para que eu especifique o mês que eu quero gerar um relatório, porém, mesmo quando pressionava o botão de cancelar, o "print preview" do relatório acabava acontecendo. Então eu criei uma "flag" boolean (cancel_fl), para que na hora em que eu pressionasse o botão "Cancelar" ela assumiria o valor "True" e quando eu apertasse o botão "Ok" ela assumiria o valor "False". Na rotina de chamada eu coloquei um if para testar a situação da flag e tomar a decisão de prosseguir com o preview do relatório ou não. O problema ocorre quando eu estabeleço o valor da flag ao clicar o botão "Cancelar", na saída do formulário de seleção do mês (Unload me), ela (a flag) retorna a situação anterior. Acho que os códigos abaixo poderão dar melhor visão sobre o que estou relatando.
O botão abaixo chama o formulário de seleção do mês.
Private Sub CommandButton4_Click()
Form_Mes.Show
If cancel_fl = True Then
Exit Sub
End If
Call Consolidado_Mensal
End Sub
O formulário de seleção do mês é bem simples tem o campo "drop down" do mês e os botões "Cancelar" e "Ok". Os códigos dos botões estão listados abaixo.
'Botão Cancelar
Private Sub BTN_Cancel_Mes_Click()
cancel_fl = True
Unload Me
End Sub
'Botão Ok
Private Sub BTN_OK_Mes_Click()
cancel_fl = False
apontador = Range("mes").Value
Range(Range("mes")).Value = Me.COMB_Mes.Value
Unload Me
End Sub
Agradeço a quem puder me ajudar.
Lúcio
Estou com problema que deve ser bem simples para os craques desse fórum e peço ajuda a esse time...
Tenho uma planilha que chama um formulário para que eu especifique o mês que eu quero gerar um relatório, porém, mesmo quando pressionava o botão de cancelar, o "print preview" do relatório acabava acontecendo. Então eu criei uma "flag" boolean (cancel_fl), para que na hora em que eu pressionasse o botão "Cancelar" ela assumiria o valor "True" e quando eu apertasse o botão "Ok" ela assumiria o valor "False". Na rotina de chamada eu coloquei um if para testar a situação da flag e tomar a decisão de prosseguir com o preview do relatório ou não. O problema ocorre quando eu estabeleço o valor da flag ao clicar o botão "Cancelar", na saída do formulário de seleção do mês (Unload me), ela (a flag) retorna a situação anterior. Acho que os códigos abaixo poderão dar melhor visão sobre o que estou relatando.
O botão abaixo chama o formulário de seleção do mês.
Private Sub CommandButton4_Click()
Form_Mes.Show
If cancel_fl = True Then
Exit Sub
End If
Call Consolidado_Mensal
End Sub
O formulário de seleção do mês é bem simples tem o campo "drop down" do mês e os botões "Cancelar" e "Ok". Os códigos dos botões estão listados abaixo.
'Botão Cancelar
Private Sub BTN_Cancel_Mes_Click()
cancel_fl = True
Unload Me
End Sub
'Botão Ok
Private Sub BTN_OK_Mes_Click()
cancel_fl = False
apontador = Range("mes").Value
Range(Range("mes")).Value = Me.COMB_Mes.Value
Unload Me
End Sub
Agradeço a quem puder me ajudar.
Lúcio
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Setar flag em um formulário
Não consegui entender a demanda?
Pode ser mais uma explicação/exemplo??
Pode ser mais uma explicação/exemplo??
Re: Setar flag em um formulário
Eu quero que a rotina encerre caso eu clique em cancelar no formulário do mês e, nesse caso, não haja "Print Preview" do relatório consolidado. A minha ideia de setar uma flag não deu certo.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Setar flag em um formulário
Precisaria "ver" a rotina que chama o formulário pois, aparentemente, simplesmente encerrando o mesmo a rotina anterior continua; poste um exemplo da mesma, se possivel
Re: Setar flag em um formulário
Já havia colocado na primeira mensagem, ai vão as rotinas...
'Chama o formulário Form_Mes - esse botão está posicionado na planilha "Menu"
Private Sub CommandButton4_Click()
Form_Mes.Show
If cancel_fl = True Then
Exit Sub
End If
Call Consolidado_Mensal
End Sub
O formulário de seleção do mês é bem simples tem o campo "drop down" do mês e os botões "Cancelar" e "Ok". Os códigos dos botões estão listados abaixo.
'rotina do Botão Cancelar do From_Mes seta em "True" a variável "cancel_fl"
Private Sub BTN_Cancel_Mes_Click()
cancel_fl = True
Unload Me
End Sub
''rotina do Botão Ok do From_Mes seta em "False" a variável "cancel_fl"
Private Sub BTN_OK_Mes_Click()
cancel_fl = False
apontador = Range("mes").Value
Range(Range("mes")).Value = Me.COMB_Mes.Value
Unload Me
End Sub
'Chama o formulário Form_Mes - esse botão está posicionado na planilha "Menu"
Private Sub CommandButton4_Click()
Form_Mes.Show
If cancel_fl = True Then
Exit Sub
End If
Call Consolidado_Mensal
End Sub
O formulário de seleção do mês é bem simples tem o campo "drop down" do mês e os botões "Cancelar" e "Ok". Os códigos dos botões estão listados abaixo.
'rotina do Botão Cancelar do From_Mes seta em "True" a variável "cancel_fl"
Private Sub BTN_Cancel_Mes_Click()
cancel_fl = True
Unload Me
End Sub
''rotina do Botão Ok do From_Mes seta em "False" a variável "cancel_fl"
Private Sub BTN_OK_Mes_Click()
cancel_fl = False
apontador = Range("mes").Value
Range(Range("mes")).Value = Me.COMB_Mes.Value
Unload Me
End Sub
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Setar flag em um formulário
Desculpe, não havia lido com atenção.
Parece-me que ao "escolher" o mês no COMB_Mes (na rotina BotãO ok), esse valor é salvo na planilha : -->Range(Range("mes")).Value = Me.COMB_Mes.Value
Não entendi a referencia --> Apontador = Range("mes").Value , pois pelo postado, não tem utilidade
Então poderia na rotina "Botão Cancelar" salvar um valor nulo ("") e criticar esse valor na rotina que chama o formulário;
Seria algo +/- assim
Parece-me que ao "escolher" o mês no COMB_Mes (na rotina BotãO ok), esse valor é salvo na planilha : -->Range(Range("mes")).Value = Me.COMB_Mes.Value
Não entendi a referencia --> Apontador = Range("mes").Value , pois pelo postado, não tem utilidade
Então poderia na rotina "Botão Cancelar" salvar um valor nulo ("") e criticar esse valor na rotina que chama o formulário;
Seria algo +/- assim
Código: Selecionar todos
Private Sub CommandButton4_Click()
Form_Mes.Show
If Range("mes").Value <> "" Then
Call Consolidado_Mensal
End If
End Sub
'..........................................
Private Sub BTN_Cancel_Mes_Click()
Range(Range("mes")).Value = ""
Unload Me
End Sub
'.......................................
Private Sub BTN_OK_Mes_Click()
apontador = Range("mes").Value
Range(Range("mes")).Value = Me.COMB_Mes.Value
Unload Me
End Sub
Re: Setar flag em um formulário
Até pensei em tirar da mensagem para não confundir
É apenas uma pequena peculiaridade para definir se o mês é de entrada ou de saída. O resultado é apenas um indexador na planilha, usando função Indireto mas para o caso em questão, pode ser desconsiderado.
Vou experimentar a sua sugestão. Eu já entendi a proposta, acho que vai funcionar.
Valeu.
É apenas uma pequena peculiaridade para definir se o mês é de entrada ou de saída. O resultado é apenas um indexador na planilha, usando função Indireto mas para o caso em questão, pode ser desconsiderado.
Vou experimentar a sua sugestão. Eu já entendi a proposta, acho que vai funcionar.
Valeu.
Re: Setar flag em um formulário
Não deu certo, está dando um erro "método range do objeto _worksheet falhou". Já tentei de diversas formas, mas não consegui.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Setar flag em um formulário
Interessante, pois não é o mesmo método utilizado nos outros botões??