Discussione:
Seleziona/copia/incolla in VBA
(troppo vecchio per rispondere)
Frank
2008-05-23 07:42:24 UTC
Permalink
Ciao,
avrei bisogno di fare questa procedura in VBA che poi farei partire con
un pulsante:

- Creare una selezione di celle in Foglio1 partendo da InizioSel (A1)
per 8 colonne fino all'ultima riga non vuota

- copiare ed incollare in Foglio2 partendo da InizioIncolla (A1)

Grazie 1000 x l'aiuto,
Francesco ;-)
bludany77
2008-05-23 08:07:33 UTC
Permalink
Post by Frank
Grazie 1000 x l'aiuto,
Francesco ;-)
Ciao,
prova:

Sub Copia()
Columns("A:H").Select
Selection.Copy
Sheets("Foglio2").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
End Sub

Attribuisci la macro ad una forma....
ciao, daniele
Norman Jones
2008-05-23 08:12:21 UTC
Permalink
Ciao Francesco,

=============
avrei bisogno di fare questa procedura in VBA che poi farei partire con
un pulsante:

- Creare una selezione di celle in Foglio1 partendo da InizioSel (A1)
per 8 colonne fino all'ultima riga non vuota

- copiare ed incollare in Foglio2 partendo da InizioIncolla (A1)
=============

In un modulo standard (vedi di sotto),
prova:

'==========>>
Public Sub Tester()
Dim WB As Workbook
Dim srcSH As Worksheet
Dim destSH As Worksheet
Dim srcRng As Range
Dim destRng As Range
Dim iRow As Long

Set WB = Workbooks("book1")
Set srcSH = WB.Sheets("Foglio1")
Set destSH = WB.Sheets("Foglio2")

With srcSH
iRow = LastRow(srcSH, .Range("A:A").Resize(, 8))
Set srcRng = .Range("A1:A" & iRow).Resize(, 8)
End With

Set destRng = destSH.Range("A1")
srcRng.Copy Destination:=destRng

End Sub

'-------------->>
Function LastRow(SH As Worksheet, _
Optional Rng As Range)

If Rng Is Nothing Then
Set Rng = SH.Cells
End If

On Error Resume Next
LastRow = Rng.Find(What:="*", _
After:=Rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
'<<=========

Per utilizzare questa routine:

Alt-F11 per aprire l'Editor di VBA
Menu | Inserisci | Modulo
Incolla il suddetto codice
Alt-F11 per tornare in Excel
Alt-F8
Seleziona "Tester"
Esegui



---
Regards.
Norman
Norman Jones
2008-05-23 08:27:44 UTC
Permalink
Ciao Frrank,

Avrei voluto aggiungere, per avviare
questa routine con un pulsante:

Per creare un pulsante:
Visualizza | Barre degli strumenti | Strunenti di Controllo
Disegna il tuo pulsante di comando sul foglio

Ccon il tasto destro del mouse fai
click sulla linguetta del foglio,
scegli "Visualizza codice" e nella
finestra del codice incollail seguente codice:

'=========>>
Private Sub CommandButton1_Click()
Call Tester
End Sub
'<<=========

Alt-F11 per tornare in Excel




---
Regards.
Norman
Frank
2008-05-23 09:19:35 UTC
Permalink
Perfetto, come sempre !!!

Ma se volessi fare come chiedevo
- Creare una selezione di celle in Foglio1 partendo da InizioSel (A1) per 8 colonne fino all'ultima riga non vuota
- copiare ed incollare in Foglio2 partendo da InizioIncolla (A1)
cioe' dare un nome alla cella di inizio della copia (InizioSel) e inizio
dell'incolla (InizioIncolla) come si fa ?
Ho provato ma mi fa sempre casino ...

Ciao,
Francesco ;-)
Norman Jones
2008-05-23 10:01:16 UTC
Permalink
Ciao Francesco,

'=============
Perfetto, come sempre !!!

Ma se volessi fare come chiedevo
Post by Frank
- Creare una selezione di celle in Foglio1 partendo da InizioSel (A1)
per 8 colonne fino all'ultima riga non vuota
- copiare ed incollare in Foglio2 partendo da InizioIncolla (A1)
cioe' dare un nome alla cella di inizio della copia (InizioSel) e inizio
dell'incolla (InizioIncolla) come si fa ?
Ho provato ma mi fa sempre casino ...
=============

Non sono sicuro di avere capito ho capito -
o, meglio non sono sicuro di avere capito lo
scopo della tua domanda.

Tuttavia, alla testa di un modulo standard,
prima di qualsiasi altro codice, prova
qualcosa del genere:

'==========>>
Option Explicit

Const sName As String = "InizioSel"
Const sName2 As String = "InizioIncolla"

'-------------->>
Public Sub Tester()
Dim WB As Workbook
Dim srcSH As Worksheet
Dim destSH As Worksheet
Dim srcRng As Range
Dim destRng As Range
Dim iRow As Long

Set WB = Workbooks("book1")
Set srcSH = WB.Sheets("Foglio1")
Set destSH = WB.Sheets("Foglio2")

With srcSH
iRow = LastRow(srcSH, .Range("A:A").Resize(, 8))
Set srcRng = .Range("A1:A" & iRow).Resize(, 8)
End With

Set destRng = destSH.Range("A1")
srcRng.Copy Destination:=destRng

srcRng.Name = sName
destRng.Name = sName2

Call demo
End Sub

'-------------->>
Public Sub demo()

With ThisWorkbook
MsgBox Prompt:="il nome " & sName _
& " si riferice all'intervallo " _
& .Names(sName).RefersToRange. _
Address(External:=True) _
& vbNewLine & vbNewLine _
& "il nome " & sName2 _
& " si riferice all'intervallo " _
& .Names(sName2).RefersToRange. _
Address(External:=True), _
Buttons:=vbInformation, _
Title:="Demo"
End With

End Sub

'-------------->>
Function LastRow(SH As Worksheet, _
Optional Rng As Range)

If Rng Is Nothing Then
Set Rng = SH.Cells
End If

On Error Resume Next
LastRow = Rng.Find(What:="*", _
After:=Rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
'<<=========

Comunque, se vuoi spiegare la tua esigenza,
forse potrei fare altri suggerimenti.



---
Regards.
Norman
Frank
2008-05-23 10:28:29 UTC
Permalink
Post by Norman Jones
Comunque, se vuoi spiegare la tua esigenza,
forse potrei fare altri suggerimenti.
Grazie della tua disponibilita',
per il momento ho risolto, alla prossima.
Francesco ;-)
Bruno Campanini
2008-05-23 09:51:10 UTC
Permalink
Ciao,
avrei bisogno di fare questa procedura in VBA che poi farei partire con un
- Creare una selezione di celle in Foglio1 partendo da InizioSel (A1) per
8 colonne fino all'ultima riga non vuota
- copiare ed incollare in Foglio2 partendo da InizioIncolla (A1)
Grazie 1000 x l'aiuto,
Francesco ;-)
Sempre più difficile:
======================================
Sub Button16_Click()
Dim C As Range, I As Range
Set C = [Foglio1!A1]
Set I = [Foglio2!A1]

[I].Resize(Range([C], [C].End(xlDown)).Resize(, 8).Rows.Count, _
Range([C], [C].End(xlDown)).Resize(, 8).Columns.Count) = _
Range([C], [C].End(xlDown)).Resize(, 8).Value

End Sub
=====================================

Bruno
Frank
2008-05-23 10:23:36 UTC
Permalink
Perfetto, era esattamente quello che volevo, ho solamente sostituito i
riferimenti delle celle
Post by Bruno Campanini
Set C = [Foglio1!A1]
Set I = [Foglio2!A1]
con

Set C = [Foglio1!InizioSel]
Set I = [Foglio2!InizioIncolla]

Grazie 1000, alla prossima
Francesco ;-)
Frank
2008-05-23 14:57:06 UTC
Permalink
Sono ancora qua' ...

Avrei bisogno che la selezione mi partisse dalla cella sotto al
Private Sub CopiaIncollaSel_Click()
Dim C As Range, I As Range
Set C = [DatiArrivo!InizioSel]
Set I = [DatiStampa!InizioIncolla]
[I].Resize(Range([C], [C].End(xlDown)).Resize(, 36).Rows.Count, _
Range([C], [C].End(xlDown)).Resize(, 36).Columns.Count) = _
Range([C], [C].End(xlDown)).Resize(, 36).Value
End Sub
Si puo' fare ?
Grazie, Francesco ;-)
Bruno Campanini
2008-05-23 16:10:47 UTC
Permalink
Post by Frank
Sono ancora qua' ...
Avrei bisogno che la selezione mi partisse dalla cella sotto al
Private Sub CopiaIncollaSel_Click()
Dim C As Range, I As Range
Set C = [DatiArrivo!InizioSel]
Aggiungi qui:
Set C = C(2)

Bruno
Frank
2008-05-23 16:41:32 UTC
Permalink
Post by Bruno Campanini
Set C = C(2)
Benissimo, ma andando avanti vengono fuori altre problematiche ...

Ora c'e' il problema che io seleziono/incollo da una tabella filtrata,
quindi con righe nascoste che quando vado ad incollare ritornano fuori e
rendono inutile il lavoro svolto:

c'e' rimedio per dirgli di incollare solo quelle visibili ?
Uso il 2007.

Grazie per la pazienza ...
Francesco ;-)
Bruno Campanini
2008-05-23 21:17:39 UTC
Permalink
Post by Frank
Benissimo, ma andando avanti vengono fuori altre problematiche ...
Ora c'e' il problema che io seleziono/incollo da una tabella filtrata,
quindi con righe nascoste che quando vado ad incollare ritornano fuori e
c'e' rimedio per dirgli di incollare solo quelle visibili ?
Uso il 2007.
Grazie per la pazienza ...
Francesco ;-)
Sorry, della pazienza non ne ho.

Bruno
eliano
2008-05-23 23:39:02 UTC
Permalink
Post by Bruno Campanini
Post by Frank
Benissimo, ma andando avanti vengono fuori altre problematiche ...
Ora c'e' il problema che io seleziono/incollo da una tabella filtrata,
quindi con righe nascoste che quando vado ad incollare ritornano fuori e
c'e' rimedio per dirgli di incollare solo quelle visibili ?
Uso il 2007.
Grazie per la pazienza ...
Francesco ;-)
Sorry, della pazienza non ne ho.
Bruno
LOL
Comunque una certa sensazione l'avevo già avuta. :-))
Saluti
Eliano
Bruno Campanini
2008-05-24 00:32:59 UTC
Permalink
Post by eliano
LOL
Comunque una certa sensazione l'avevo già avuta. :-))
Saluti
Eliano
Ciao Eliano.

Quando mi cambiano le carte in tavola perdo il lume
della ragione.

Bruno
eliano
2008-05-24 00:54:01 UTC
Permalink
Post by Bruno Campanini
Post by eliano
LOL
Comunque una certa sensazione l'avevo già avuta. :-))
Saluti
Eliano
Ciao Eliano.
Quando mi cambiano le carte in tavola perdo il lume
della ragione.
Bruno
Ciao Bruno.
Non te la prendere: succede; pare che succedesse anche ad un Santo di
recente nomina.:-)
Cordialmente
Eliano
Frank
2008-05-24 06:59:51 UTC
Permalink
Post by Bruno Campanini
Sorry, della pazienza non ne ho.
Mi dispiace, purtroppo se non hai esperienza, sai dei problemi quando
vengono fuori;
comunque grazie lo stesso,
Francesco ;-)
eliano
2008-05-25 21:07:00 UTC
Permalink
Post by Frank
Post by Bruno Campanini
Sorry, della pazienza non ne ho.
Mi dispiace, purtroppo se non hai esperienza, sai dei problemi quando
vengono fuori;
comunque grazie lo stesso,
Francesco ;-)
Bel colpo Francesco.
Consigliasi visita oculistica. :-))
Eliano

eliano
2008-05-24 01:12:01 UTC
Permalink
Post by Frank
Post by Bruno Campanini
Set C = C(2)
Benissimo, ma andando avanti vengono fuori altre problematiche ...
Ora c'e' il problema che io seleziono/incollo da una tabella filtrata,
quindi con righe nascoste che quando vado ad incollare ritornano fuori e
c'e' rimedio per dirgli di incollare solo quelle visibili ?
Uso il 2007.
Con il 2007 non lo so, ma con il 2003, seguendo le indicazioni della guida
in linea fa la copia delle sole celle visibili.
Prova con il registratore di macro per verificare se funge anche con il 2007
e regolati di conseguenza.

http://office.microsoft.com/it-it/excel/HP012164131040.aspx?pid=CH100648341040#VisibleCells

Eliano
Continua a leggere su narkive:
Loading...