Macro to Copy & Paste in backgorund

A

Alarmbloke

Hello again,

I currently have a few macros which copy and paste data from one sheet to
another.

When the run you see the sheets flicking between each other as the macro
selects the active sheet, copies the selected range, then selects the
destination sheet pastes etc etc.

This all works as it should but is there a way of doing it in the background
whilst the user just sees the main input sheet and not flicking pages.

This would seriously help with saving my eye sight

Messy(Macro) as below

Sub transfer()
'
' transfer Macro
'
'

'
Range("H11").Select
Selection.Copy
Sheets("Quote").Select
Range("B48:M48").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H12").Select
Selection.Copy
Sheets("Quote").Select
Range("B50:M50").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H13").Select
Selection.Copy
Sheets("Quote").Select
Range("B51:M51").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H14").Select
Selection.Copy
Sheets("Quote").Select
Range("B52:M52").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H15").Select
Selection.Copy
Sheets("Quote").Select
Range("B53:M53").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H16").Select
Selection.Copy
Sheets("Quote").Select
Range("B54:M54").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H17").Select
Selection.Copy
Sheets("Quote").Select
Range("B55:M55").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H18").Select
Selection.Copy
Sheets("Quote").Select
Range("B56").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Sheets("Quote").Select
Range("N47:U47").Select

End Sub
 
N

Nigel

hi,

could you copy the range H12:H18 and paste it into your other cells on the
Quote sheet in one job lot? are the cells on quote book B**:M** merged cells?

regs,

Nigel
 
A

Alarmbloke

Should also add that the data that is being copied doesnt stay the same all
the time, this is to say I only need a snapshot of the data rather than using
=Sheet1!H12 for example which I assume would alter the data automatically if
it changes.
Sorry to complicate matters
 
D

DS NTE

To avoid flickering:

Application.Screenupdating = False
Your code
Application.Screenupdating = True


hth
knut
 
A

Alarmbloke

Amazing !!!! My pulsating eyes thank you immensly, just what the option ordered
 
N

Nigel

Hi,

You could use this:

Sub Transfer()
Application.ScreenUpdating = False

Sheets("Quote").Select

Range("H11").Select
Ranger1 = ActiveCell.Value
Range("H12").Select
Ranger2 = ActiveCell.Value
Range("H13").Select
Ranger3 = ActiveCell.Value
Range("H14").Select
Ranger4 = ActiveCell.Value
Range("H15").Select
Ranger5 = ActiveCell.Value
Range("H16").Select
Ranger6 = ActiveCell.Value
Range("H17").Select
Ranger7 = ActiveCell.Value
Range("H18").Select
Ranger8 = ActiveCell.Value

Range("Sheet1!B48").Value = Ranger1
Range("Sheet1!B50").Value = Ranger2
Range("Sheet1!B51").Value = Ranger3
Range("Sheet1!B52").Value = Ranger4
Range("Sheet1!B53").Value = Ranger5
Range("Sheet1!B54").Value = Ranger6
Range("Sheet1!B55").Value = Ranger7
Range("Sheet1!B56").Value = Ranger8

Sheets("Quote").Select
Range("N47:U47").Select

Application.ScreenUpdating = True

End Sub

This nests all of the required information from "Quote" and places it into
"Sheet1".
there is no need for pastespecials as it is placing the data Value only and
not a path.

the screen does not change so the info is transfers quickly in the
background in 1 movement rather than 9.

Hope it helps.

Nigel
 
T

TG

Hello DS NTE,
How can I make your code:
Application.Screenupdating = False
Your code
Application.Screenupdating = True

work with:
Private Sub Worksheet_Calculate()
Const MyCells As String = "c7,b48,b49,b50,b51,b54,b55,b56" 'adjust the
range to suit
On Error GoTo stoppit
Application.EnableEvents = False
For Each cell In Me.Range(MyCells)
With cell
If .Value = "" Then
.EntireRow.Hidden = True
Else
.EntireRow.Hidden = False
End If
End With
Next
stoppit:
Application.EnableEvents = True
End Sub

So it doesnt blow up????
Thank you.
TG
 
T

TG

Hello DS NTE,
How can I make your code:
Application.Screenupdating = False
Your code
Application.Screenupdating = True

work with:
Private Sub Worksheet_Calculate()
Const MyCells As String = "c7,b48,b49,b50,b51,b54,b55,b56" 'adjust the
range to suit
On Error GoTo stoppit
Application.EnableEvents = False
For Each cell In Me.Range(MyCells)
With cell
If .Value = "" Then
.EntireRow.Hidden = True
Else
.EntireRow.Hidden = False
End If
End With
Next
stoppit:
Application.EnableEvents = True
End Sub

So it doesnt blow up????
Thank you.
TG
 
G

Gord Dibben

Why would you want the screen to not update?

All you're doing is hiding and unhiding rows based on content of some cells.

No jumping around happening.

If you do add the two lines you are saying Excel crashes or the code blows
up?

Doesn't for me when I add them as such. But they are not necessary IMO.

Private Sub Worksheet_Calculate()
Const MyCells As String = "c7,b48,b49,b50,b51,b54,b55,b56" 'adjust the
'range to suit
On Error GoTo stoppit
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
For Each cell In Me.Range(MyCells)
With cell
If .Value = "" Then
.EntireRow.Hidden = True
Else
.EntireRow.Hidden = False
End If
End With
Next
stoppit:
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub


Gord Dibben MS Excel MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top