- Este tópico contém 6 respostas, 2 utilizadores e foi actualizado pela última vez há 11 anos, 10 meses por jorgerod.
-
AutorArtigos
-
-
11 de Março de 2013 às 1:53 #1301AlbinoParticipante
olá boas.
cá vou eu com mais uma duvida.
É o seguine:
em tempos usei uma instrução offset “penso que se chama ssim”, que me copiava conteudo de determinada celula e colava numa outra de outra folha.
no projecto em que ando a trabalhar necessito dessa função, pois dava-me um “jeitasso”, só que a activação por duplo clique não me é vantajosa.
gostaria de saber se é possivel usar essa mesma função,mas partindo de uma celula especifica, activada por um botão, o código inicial era:private sub worksheet_beforedoubleclick(byval target as range, cancel as boolean)
set rng1 = activecell ‘clicar duplamente sempre numa célula da coluna a,
xpto
xpto
xptorange(“a1”).select ‘ esta selecção de a1, é apenas para desactivar a activecell
end sub
cada vez que dava duplo clique na celula da coluna a o código era efectuadoos dados a copiar estão na folha1 renomeada “quadro” e pertendo colar os dados para folha3, renomeada “carta”.tentei adaptar para :
sub carta()
set rng1 = (“a3”).select
application.screenupdating = false
set rng2 = rng1.offset(0, 2)
set rng3 = rng1.offset(0, 4)
set rng4 = rng1.offset(5, 3)rng2.copy
worksheets(“carta”).[s2:y29].pastespecial (xlvalues)
rng3.copy
worksheets(“carta”).[s4:y4].pastespecial (xlvalues)
rng4.copy
worksheets(“carta”).[s6:w6].pastespecial (xlvalues)
application.screenupdating = trueend sub
o problema é que quando chega á 1ª linha de colar devolve erro 400.
será por serem celulas unidas na copia ena colagem?’
obrigadoalbino
-
11 de Março de 2013 às 17:29 #2130jorgerodAdministrador
albino,
vÊ em http://www.myonlinetraininghub.com/excel-offset-function-explained
e em: http://chandoo.org/wp/2012/09/17/offset-formula-explained/
julgo que lá está tudinho explicado, nomeadamente a utilização de ranges.
diz qq coisa, ou então, manda um exemplo numa planilha, ok?
fica bem.
-
13 de Março de 2013 às 18:47 #2131AlbinoParticipante
boas
jorge rod
o modo como actua o offset até que entendi e como tal, no meu código coloquei o local onde quero colar os dados depois de os copiar das celulas escolhidas. o meu problema é fazer com que o código vba funcione para essa função.
pois ao fazer com que o código escolha determinada celula e copie outras por macro, ele não avança.
mando-te um ficheiro exemplo do que pretendo, a folha 1 tem instruções do que pretendo..
desde já obrigado
albino
QuadroUrgenciaOBSTEMP.zip -
17 de Março de 2013 às 23:51 #2135jorgerodAdministrador
albino,
experimenta:sub carta()
set rng1 = worksheets(“quadro”).range(“a3”)
set rng5 = worksheets(“quadro”).range(“c8”)application.screenupdating = false
set rng2 = rng1.offset(0, 2)
set rng3 = rng1.offset(0, 5)
set rng4 = rng5.offset(0, 1)worksheets(“carta”).[s2] = rng2
worksheets(“carta”).[s4] = rng3worksheets(“carta”).[s6] = rng4
application.screenupdating = true
range(“c3”).select
end sub
fica bem e diz qq coisa. -
21 de Março de 2013 às 3:14 #2145AlbinoParticipante
boas
jorgerod.
como sempre a coisa deu certo, no entanto tive de acrescentar uma pequena instrução, pois cada vez que executava o código o mesmo devolvia-me um erro não especifico “400” .
juntei “on error resume next” código “exit sub” e ficou a funcar
segue o código utlizado na integra .
o que ele faz:
-apaga conteudo que possa existir na folha onde vai colar os dados
– cola os dados da folha1 para determinadas celulas na folha2sub preenchercarta1()
application.screenupdating = false
sheets(“carta”).select
range(“s2,s4,s6,s9,a10:z11,q14,i15,q16,f18,q21,i22,q23,u22,u23,f24,q27,i28,q29,u28,u29,u30,p31,f32,q35,i36,q37,i38,n38,s38,f39,l42:l45,q42:q44,f46,a50:z55,o56”).select
selection.clearcontentsset rng1 = worksheets(“quadro”).range(“a3”)
set rng5 = worksheets(“quadro”).range(“c8”)on error resume next
set rng2 = rng1.offset(0, 2)
set rng3 = rng1.offset(0, 5)
set rng4 = rng5.offset(0, 1)
set rng6 = rng1.offset(0, 6)worksheets(“carta”).[s2] = rng2
worksheets(“carta”).[s4] = rng3worksheets(“carta”).[s6] = rng4
worksheets(“carta”).[s9] = rng6
application.screenupdating = true
worksheets(“carta”).select
range(“a11”).select
exit sub
end submais uma vez obrigado
ps. por uma questão de preciosismo, haveria a possibilidade de por o codigo a executar a mesma tarefa mas de celulas de origem diferentes? isto é as celulas a copiar estão localizadas na folha1 sempre a uma distancia entre elas de 6 celulas. as celulas que recebem os dados são sempre as mesmas.
o que eu fiz foi fazer tantas instruções como aquelas que queria neste caso 6.
se quiseres envio-te o ficheiro para colocares no forum. -
21 de Março de 2013 às 15:52 #2146jorgerodAdministrador
manda, sim…. obrigado! 🙂
-
23 de Março de 2013 às 22:59 #1302AlbinoParticipante
bboas
jorge rod
com prometido então aqui vai o ficheiro que eu criei.
não sei se servirá para alguma coisa, mas a mim deu-me e dá-me jeito no meu trabalho.
qulaquer explicação para que serve é só perguntar.
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.