Ir ao conteúdo

Macro copia/cola checkbox habilitada


WESLEYARODRIGUES

Posts recomendados

Postado

Olá, pessoal. Faz um tempo que venho desenvolvendo uma planilha para cálculo de horas extras. Para facilitar o operacional, estou precisando de uma macro que, ao clicar um botão, ela copie as células do intervalo "L6;N6;P6;R6" e cole somente nas linhas onde a checkbox estiver habilitada. Desde já agradeço muito a atenção.

Estou utilizando o Office 2003.

Segue link p/baixar o modelo da planilha: http://www.4shared.com/office/QONxhH11/planilha_postada.html

Postado

Aqui no post você informou que as células de origem são 'L6:R6', porém no arquivo de exemplo você informou outro intervalo de origem: 'K8:Q8' (???).

Considerei o intervalo que está informado na planilha de exemplo.

Sub CopiaCola()
Dim box As CheckBox, plan As Worksheet, k As Long, m As Long
For Each box In Sheets("Plan1").CheckBoxes
k = k + 1
If box.Value = "1" Then
m = Right(box.Name, 2) + k
Cells(m, 19).Resize(, 7) = [K8].Resize(, 7).Value
End If
Next
End Sub

Postado
Aqui no post você informou que as células de origem são 'L6:R6', porém no arquivo de exemplo você informou outro intervalo de origem: 'K8:Q8' (???).

Considerei o intervalo que está informado na planilha de exemplo.

Sub CopiaCola()
Dim box As CheckBox, plan As Worksheet, k As Long, m As Long
For Each box In Sheets("Plan1").CheckBoxes
k = k + 1
If box.Value = "1" Then
m = Right(box.Name, 2) + k
Cells(m, 19).Resize(, 7) = [K8].Resize(, 7).Value
End If
Next
End Sub

Desculpe Osvaldo, é que eu eu estava utilizando outra planilha, e quando postei esta, o intervalo era diferente...rsrs... Deu certinho... muito obrigado!

  • 3 meses depois...
Postado
Conforme solicitado, estamos reabrindo este tópico!

Solicitei a reabertura deste tópico porque o código do Osvaldomp trouxe apenas a solução parcial para minha necessidade.

Não entendo praticamente nada de VBA, por isso peço a ajuda de vocês.

Eu havia mudado o código dele para este:

Sub CopiaCola()

Dim box As CheckBox, plan As Worksheet, k As Long, m As Long

For Each box In ActiveSheet.CheckBoxes

k = k + 1

If box.Value = "1" Then

m = Right(box.Name, 2) + k

Cells(m, 11).Resize(, 7) = [K8].Resize(, 7).Value

End If

Next

End Sub

Pelo que entendi, o código considera o nome das CheckBoxes para localizar a linha. Meu arquivo terá pelo menos umas 30 plan e a cada plan criada 31 checkbox diferentes, uma para cada linha.

Ou seja, na plan2, a 1ª checkbox terá o nome de checkbox 32, portanto quando executar a macro com essa checkbox selecionada, vai colar os dados na linha 33 que é o nome da checkbox + 1 da fórmula (esta linha à mais é porque na planilha, a cada linha utilizada, estou dando o espaço de outra linha vazia).

Agradeço à atenção.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...