- Este tópico contém 18 respostas, 2 utilizadores e foi actualizado pela última vez há 14 anos, 7 meses por jorgerod.
-
AutorArtigos
-
-
26 de Março de 2010 às 2:27 #829pmonicaParticipante
tenho um userform onde tenho textbox’s para preencher e checkbuttons para escolher opções. 2 questões:
a 1ª é peanuts para ti certamente, a 2ª parece-me talvês utópica… 🙂1ª haverá alguma forma de, caso me esqueça de preencher uma textbox ou clicar num checkbutton, fazer uma pausa no código e manter o userform visível para o completar?
2ª numa das textbox’s tenho que introduzir data, que infelizmente tem que ser tipo “12-aug” para colar numa célula de uma folha a data de 12 de agosto. tens conhecimento de algum calendário que se possa incorporar no userform, que clicando nele, podemos escolher o dia, mês e ano e esse valor é colocado na respectiva célula da folha de cálculo (vê a imagem abaixo como exemplo)?
fico a aguardar um feedback quando tiveres oportunidade.
saudações
paulo mónica
Calendrio.PNGAttachments:
You must be logged in to view attached files. -
26 de Março de 2010 às 3:02 #1377jorgerodAdministrador
boas, paulo,
quanto à inserção de calendário, vê em: http://www.ozgrid.com/news/excel-calendar-dates.htm
faz o download do demo e pesquisa o código e o userform.
quanto à 1ª questão, amanhã dou-te a resposta. agora já é muito tarde! 😉
-
26 de Março de 2010 às 10:39 #1378pmonicaParticipante
jorge,
fiz o download de ozgrid mas ao abrir o ficheiro infelizmente aparece-me indicação de que está algo em falta no meu pc e não consigo visializar o calendário. por acaso não suspeitas o que pode estar em falta (ve a 1ªa imagem abaixo)?ao clicar no botão show calendar da folha de cálculo, aparece-me mais um erro e leva-me para o vbe (vê a 2ª imagem abaixo).
por acaso não consegues saber qual será o problema?
saudações.
p. mónica
Erro_Calendrio1.jpgAttachments:
You must be logged in to view attached files. -
26 de Março de 2010 às 10:44 #1379pmonicaParticipante
esta é a 2ª imagem:
Erro_Calendrio2.jpgAttachments:
You must be logged in to view attached files. -
27 de Março de 2010 às 1:53 #1380jorgerodAdministrador
olá paulo,
o mais certo é não teres este controlo, porque ele é instalado com o access. se não tiveres o access instalado… eu dou-te a possibilidade de o instalares. acede a http://www.fontstuff.com/vba/vbatut07.htm e faz o download.
depois, para o instalares, tens que fazer de acordo com a versão do excel que tens.
refiro-te aqui como deves fazer (créditos para o mvp ron de bruin):
acho que, depois de instalares, já poderás abrir o demo.
agora, quanto ao preenchimento obrigatório, podes inserir o seguinte código no teu código:
dim c as control
for each c in me.controls
if typename(c) = “textbox” or typename(c) = “combobox” then
if c.value = “” then
msgbox “por favor, preencha todos os campos!”
c.setfocus
exit sub
end if
end if
nextisto faz com que tudo o que seja textbox ou combobox, tenha que ter conteúdo, senão aparecerá a mensagem.
fica bem e diz qq coisa, ok?
-
29 de Março de 2010 às 22:33 #1381pmonicaParticipante
boas,
só hoje tive hipótese de voltar ao xl…
1. então é assim, sobre o calendário: agradeço desde já o link. fiz o download o ficheiro segui as tuas instruções e continuo a ter a mesma janela de erro que transmiti anteriormente, deve ser devido ao facto de não ter o access instalado no meu office (opção minha quando instalei o office).
experimentei igualmente fazer a instalação do suplemento xla e a mesma janela de erro apareceu!
isto era só para evitar que as pessoas que irão trabalhar com o ficheiro não tenham que se lembrar sempre que têm que colocar as iniciais dos meses em inglês (independentemente de ter um alerta no respectivo userform!2. sobre o código que me enviaste:
a. de facto funciona se todas as textbox’s ou combobox’s tenham que ser preenchidas, mas por exemplo vê o exemplo do userform abaixo: só quero que nenhuma das vermelhas fique sem ser preenchida. há forma de adaptar o teu código mediante o nome das textbox’s?
b. se o userform tiver conjuntos de optionbuttons (imagem que te vou enviar no post a seguir a este), todos os conjuntos de optionbutton’s têm que ter pelo menos um com value true! também aqui, há forma de adaptar o teu código optionbuttons’s (nesta situação todos os conjuntos têm que ter mesmo uma com valor true!saudações.
paulo mónica
exemplo2.JPGAttachments:
You must be logged in to view attached files. -
29 de Março de 2010 às 22:43 #1382pmonicaParticipante
este é o 2º exemplo de userform que falei no post anterior
exemplo1.JPGAttachments:
You must be logged in to view attached files. -
30 de Março de 2010 às 0:26 #1383pmonicaParticipante
jorge,
acho que já descobri como resolver o problema (1 ou outra opção abaixo), falta-me é só um pequeníssimo pormenor:
que código colocar onde estão “????” para que as instruções do userform parem, o userform fique visível e seja completado?utilizando o seguinte código
– para textbox’s : if textboxa,value = “” then
– para option button’s: if optionbuttona.value=false then
depois:opÇÃo a
—————————————————————————-
msgbox “não indicou como o pagamento foi efectuado!”, vbexclamation _
, title:=”alerta de xpto:”
??????
—————————————————————————-opÇÃo b
—————————————————————————-
dim msg, style, title, help, ctxt, response, mystring
msg = “xpto”
style = vbyesno
title = “xpto”
response = msgbox(msg, style, title, help, ctxt)
if response = vbyes then
mystring1 = “yes”
msg = “xpto”
style = vbyes
title = “xpto”
response = msgbox(msg, style, title, help, ctxt)
‘ ???????
else
mystring2 = “no”
msg = “xpto”
style = vbyes
title = “xpto”
response = msgbox(msg, style, title, help, ctxt)
‘ aqui sei o cÓdigo que colocar
end if
—————————————————————————- -
1 de Abril de 2010 às 21:37 #1390pmonicaParticipante
jorge,
já que estás online, dava para dares uma olhadela no meu ultimo post?
gracias -
1 de Abril de 2010 às 22:17 #1391jorgerodAdministrador
paulo,
sobre o código:
supondo que os textboxes que tens a encarnado vão de textbox1 a textbox 5:
dim i as integer
with activesheet
for i= 1 to 5if .textbox(i).value = 0 then
msgbox ” tem que preencher!!!”
end if
next i
end witha mesma coisa para os optionbuttons…
espero que te sirva.
-
1 de Abril de 2010 às 22:36 #1392pmonicaParticipante
obrigado pela hiper rapidez!
coloquei o código “dentro” de um dos userforms e eis o erro que me dá:
Sem_ttulo.jpgAttachments:
You must be logged in to view attached files. -
1 de Abril de 2010 às 23:26 #1394jorgerodAdministrador
paulo,
talvez:
for i=2 to 3
if me.controls(“textbox” & i).text = “” then … ‘ (text ou value…)atenção: não testei.
-
2 de Abril de 2010 às 0:12 #1395pmonicaParticipante
jorge,
estamos lá quase!!!
quase funciona, mas:
se preencher só a textbox 2, de facto o código pára, a userform mantém-se visivel, mas não me deixa seleccionar a textbox 3 para a preencher!
se preencher só a textbox 3, o código não para e a userform desaparece.com os optionbuttons: aparece a janela “x” vezes (x= ao numero de optionbuttons de cada userform em que só um tem value “true”), mas o userform desaparece e aparece-me a janela de erro abaixo, que tem certamente a ver com a “descoordenação” de dados entre o teu código e resto do meu (ou não…).
uma outra coisa: o inicio do teu código começa com “with worksheet”, mas o código está “dentro” de um userform…?
optionbutton.jpg -
2 de Abril de 2010 às 1:08 #1396jorgerodAdministrador
paulo,
sim, julgo que o erro terá a ver com o facto do código estar a apontar para a worksheet, sem a mencionar. acho que podes tirar o with e o end with.
de resto, estou a escrever um pouco de cor, mas talvez ajude nalguma coisa:
dim c as control
for each c in me. controls
if typename(c)=”textbox” then
if me.controls(“textbox” & i).text = “” then
msgbox “blá-blá…”
c.setfocus
exit sub
end if
end if
next
será isto?
-
2 de Abril de 2010 às 1:13 #1397pmonicaParticipante
jorge,
estive a revirar as minhas notas e as tuas ajudas anteriores e encontrei algo que penso será o caminho mais indicado. passo a explicar:
em 2007 pedi ajuda no forum da microsoft para parar o código de uma macro até se seleccionar uma célula de folha indicada e só depois o código continuava. na altura o jrod forneceu-me um código que funciona na perfeição e que indico abaixo:
creio que se me conseguisses adaptar este excerto de código, mas para:
1. as textbox (predefinidas) nÃo tenham value=””
2. os conjuntos de optionbuttons (predefinidos) em que um de cada conjunto tem que ter value=true
o meu problema ficaria resolvido!exemplo de 2007
—————————————————————
sub teste01()on error resume next
dim therange as range
dim rngrng = sheets(“resumo”).range(“a1”).value
sheets(“registo01”).select
set therange = application.inputbox(prompt:=”seleccionar uma célula “, type:=8)
if therange is nothing then
msgbox “tem que seleccionar uma célula”
end if
therange.activate
therange.value = rngend sub
—————————————————————algo que testei mas que me termina o código e não o pausa (como pretendo) é o seguinte:
para optionbutton:
—————————————————————
private sub commandbutton1_click()
if optionbutton10.value = false and optionbutton11.value = false then
msgbox “não indicou como o pagamento foi efectuado!”, vbexclamation _
, title:=”alerta”
end
‘end if
—————————————————————para textbox:
—————————————————————
private sub commandbutton1_click()
if textbox2.value = “” or textbox2.value = “” then
msgbox “não indicou o valor ou data do pagamento!”, vbexclamation _
, title:=”alerta”
end
‘end if
—————————————————————isto ajuda, ou só confunde?
boa páscoa “padrinho de excel” – pois, porque contigo tenho tido uma excel educação 5*!
abraço. -
2 de Abril de 2010 às 1:33 #1398pmonicaParticipante
também não funciona 🙁 🙁 🙁
vê o meu outro post que pode ser que ajude (a ti e a mim). -
3 de Abril de 2010 às 14:02 #1400pmonicaParticipante
jorge,
esquece esta questão!!!
como em quase tudo na vida, só complicamos o que é fácil!
ora se queremos que o código avance só depois de algumas textbox com valor e/ou com um dos optionbuttons de cada grupo activos (mantendo o userform visivel), a solução é tão simples como isto:
———————————————————-
if textbox1.value=”” and textbox2.value=”” then ‘ tanto pode ser “and” como “or” mediante as necessidades
msgbox “xpto”
else
‘o resto do código por mais longo que ele seja.
end if
———————————————————-
ou para os optionbuttons de cada conjunto:
———————————————————-
if optionbutton1.value=false and optionbutton2.value=false then ‘ aqui tem que ser “and”
msgbox “xpto”
else
‘o resto do código por mais longo que ele seja.
end if
———————————————————-
se achares relevante, posso enviar-te alguns exemplos destes de userforms com combinações de textboxes e optionbuttons para publicares aqui.diz qualquer coisa.
gracias
paulo mónica -
4 de Abril de 2010 às 21:18 #1401jorgerodAdministrador
paulo,
manda, sim, por favor.
obrigado
-
5 de Abril de 2010 às 22:50 #830pmonicaParticipante
nos próximos dias vou-te enviar então um e-mail com essa info!
saudações
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.