- Este tópico contém 5 respostas, 2 utilizadores e foi actualizado pela última vez há 12 anos, 11 meses por jorgerod.
-
AutorArtigos
-
-
6 de Fevereiro de 2012 às 17:33 #1035AlbinoParticipante
boas.
tenho uma macro para apagr os dados em determinadas celulas e agora gostaria de associar a uma outra macro neste caso a de impressão a indicação de verificar se determinadas celulas estão preenchidas antes de imprimir.
seria mais ou mnos isto que eu prtendo:
se as celulas f7, f8, f9, c17, c22, e22, e28 estão vazias, então aparecer aviso “È favor preencher todos os campos” ok
tentei aplicar este código mas não funciona:sub imprimir()
‘
‘verifica preenchimentoif range(“f7:f9,c17,c22,e22,e28”).value = “” then
msgbox “preencha toso os campos.”, vbokonly, (“atenção”)
end if
exit subrange(“f7”).select
‘ imprimir a folha
range(“a1:l49”).select
executeexcel4macro “print(1,,,1,,,,,,,,2,,,true,,false)”
range(“f7”).select‘mudar numeração para seguinte
range(“c17”).value = range(“c17”) + 1end sub
agradecia ajuda
obrigado -
6 de Fevereiro de 2012 às 19:23 #1787jorgerodAdministrador
albino,
sem ter experimentado, julgo que o teu problema estará no controlo das células, é isto?
se for, talvez possas utilizar uma coisa parecida com isto:
dim r as range, cell as range
ary = array(range(“f7:f9”), range(“c17:c17”), range(“c22:c22”),range(“e22:e22”), range(“e28:e28”))
for i = lbound(ary) to ubound(ary)
for each cell in ary(i)
if cell.value= “” then
msgbox “preencha todos os campos.”, vbokonly, (“atenção”)
endif
next
next
exit sub
…experimenta e diz qq coisa, ok?
-
7 de Fevereiro de 2012 às 1:06 #1788AlbinoParticipante
olá jorgerod
em termos de verificação funcionou, no entanto por cada campo que não estava preenchido repetia a msgbox.
não havia grande problema, mas o pior é que depois não executa o resto do código, que é a impressão.
portanto pára no exit sub e não vança para as instruções seguintes.
tentei retirar esse exit sub, mas depois da verificação e das mgsbox, faz a impressão mesmo não tendo tudo preenchido e isso não me interessa.
o código todo será :
sub imprimir()
‘
‘ verifica preenchimentos dos campos
‘
dim r as range, cell as range
ary = array(range(“f10:f12”), range(“g12:g12”), range(“c22:c22”), range(“e22:e22”), range(“e24:e28”))
for i = lbound(ary) to ubound(ary)
for each cell in ary(i)
if cell.value = “” then
msgbox “preencha todos os campos.”, vbokonly, (“atenção”)
end if
next
next
exit sub‘imprime folha
‘
range(“a1:l49”).selectexecuteexcel4macro “print(1,,,1,,,,,,,,2,,,true,,false)”
range(“f7”).select‘mudar numeração para seguinte
range(“c17”).value = range(“c17”) + 1end sub
-
7 de Fevereiro de 2012 às 1:11 #1789AlbinoParticipante
ops.
está resolvido.
coloquei o exit sub antes de end ifobrigado
-
7 de Fevereiro de 2012 às 18:58 #1790jorgerodAdministrador
albino,
se não te importas, coloca o código correcto aqui, para os “vindouros”, ok?
obrigado e 1 ab.
-
8 de Fevereiro de 2012 às 2:13 #1036AlbinoParticipante
olá jorgerod
então aqui vai o código que alterei e que agora estáa funcionar como quero.sub imprimir()
‘
‘ verifica preenchimentos dos campos
‘
dim r as range, cell as range
ary = array(range(“f10:f12”), range(“g12:g12”), range(“c22:c22”), range(“e22:e22”), range(“e24:e28”))
for i = lbound(ary) to ubound(ary)
for each cell in ary(i)
if cell.value = “” then
msgbox “preencha todos os campos.”, vbokonly, (“atenção”)
exit sub
end if
next
next‘imprime folha
‘
range(“a1:l49”).select‘substitui esta linha pela que está em baixo uma vez que me premite escolher o nº de cópias
activewindow.selectedsheets.printout copies:=1
‘executeexcel4macro “print(1,,,1,,,,,,,,2,,,true,,false)”‘mudar numeração para seguinte
range(“c17”).value = range(“c17”) + 1‘coloca a folha na posição adequada para a proxima edição
range(“f10”).select
activewindow.smallscroll down:=8end sub
abraço…
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.