Respostas criadas no fórum
-
AutorArtigos
-
jorgerodAdministrador
zé norberto,
talvez utilizando 2 critérios no filtro.
exemplo:
sub nova_folha()
dim mes as string
dim tabname as stringtabname = range(“e4”).value
activesheet.select
with sheets(1)
.autofiltermode = false
with .range(“b16:i150″)
.autofilter
.autofilter field:=5, criteria1:=”n*”
end with
end with
do while mes = “”
mes = inputbox(prompt:=”digite o mês e enter para continuar”, title:=”nome”)
loopactivesheet.copy after:=sheets(tabname)
activesheet.name = mes
range(“e4”).value = mesactivesheet.move after:=worksheets(worksheets.count)
end sub
jorgerodAdministradorzé norberto,
talvez:
definir o range a imprimir com um nome (ex: print1)
depois, utilizar código:
sub printpg1()
with activesheet.range(“print1”)
with .pagesetup
.orientation = xlportrait
end with
activewindow.selectedsheets.printout copies:=1, collate:=true
end with
end sub
jorgerodAdministradorpaulo,
a utilização só por si da msgbox, sem lhe atribuíres uma variável, não te dará alternativa.
só através da atribuição de variável conseguirás o que pretendes.
exemplo:
dim userchoice as integer
userchoice = msgbox(“tem a certeza que quer apagar os incrementos?”, vbyesno + vbquestion, title:=”atenção!!!”)
select case userchoice
case vbno
range(“a1”).select
exit sub
case else
range(“b1”).select
end case
end subjorgerodAdministradorzé norberto,
quanto à tua 1ª questão, não a percebi muito bem. podes explicar um pouco melhor ou exemplificar?
quanto à 2ª:
em relação ao espaço para as assinaturas, podes sempre assegurar através do rodapé.
quanto à impressão dinâmica, vê este pequeno exemplo e tenta adaptar (créditos para jlatham):
sub setprintarea()
‘change this constant
‘to point to the column
‘that will always have entries
‘down to the last used row on
‘the parts order sheet
‘it should be a column that
‘you type data into, not one
‘with a formula.
const keycolumn = “a”activesheet.pagesetup.printarea = “$a$1:$n$” _
& range(keycolumn & rows.count).end(xlup).row
activewindow.selectedsheets.printout copies:=1end sub
put this macro into your workbook:
open the workbook, press [alt]+[f11] to open the vb editor then choose
insert –> module and copy and paste the code into the code module presented
to you. change the letter for the ‘keycolumn’ as needed. close the vb
editor.add a button from the forms toolbar or a text box to your worksheet and
assign the macro to it so that when it is clicked, the print area will be
reset and a copy of the sheet will be printed.jorgerodAdministradorpaulo,
manda, sim, por favor.
obrigado
jorgerodAdministradorpaulo,
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?
jorgerodAdministradorpaulo,
talvez:
for i=2 to 3
if me.controls(“textbox” & i).text = “” then … ‘ (text ou value…)atenção: não testei.
jorgerodAdministradorpaulo,
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.
jorgerodAdministradorolá zé norberto,
“metendo-me” um pouco na “conversa”, talvez consigas imprimir através de um pouco de código (créditos para o mvp mrexcel), que associarias a um botão de comando:
private sub pagelayoutbutton()
dim layout as stringlayout = msgbox(“carregue em sim para retrato ou não para paisagem”, vbyesnocancel, “selecção de orientação”)
if layout = vbyes then
activesheet.pagesetup.orientation = xlportrait
activewindow.selectedsheets.printout
elseif layout = vbno then
activesheet.pagesetup.orientation = xllandscape
activewindow.selectedsheets.printout
exit sub
end if
end subfica bem e boas amêndoas!!!
🙂
jorgerodAdministradorolá 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?
jorgerodAdministradorboas, 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! 😉
jorgerodAdministradorok… problema esquecido! 🙂
jorgerodAdministradorpaulo,
coloca aqui o eu código, porque julgo que haverá um erro de conteúdo.
jorgerodAdministradorpaulo,
este código é para controlar os acesso e/ou alterações a um dterminado livro do excel, num ambiente partilhado, em que cada utilizador entra com o seu próprio username. deste modo, pode verificar-se sempre quem e quando entrou ou alterou.
jorgerodAdministradorboas, paulo mónica,
para que serve: para te retornar numa folha escondida o ambiente em que estás a trabalhar e a data e hora do acesso.
podes ler acerca disto, para melhor elucidação em:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=762
http://blogs.officezealot.com/charles/archive/2004/12/10/3574.aspx
http://www.vbaexpress.com/kb/getarticle.php?kb_id=234
espero que te sirva!….
ah!… muito obrigado pelos elogios!!!!
um abraço.
-
AutorArtigos