Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
jenniferlawhp
 
Posts: n/a
Default Is there NOT a "make negative" function? and if not WHY???????


Is there a shortcut to make a cell negative?

I'm looking for a simpler way than "F2, home, -" for each cell or
running a "=0-A1" in another column and then pasting the cells as
values and deleting the column with the formula.

Grrrrrr! It seems there ought to be a simpler way to do it.

Control-D copies the cell above it... is there something like that for
"make negative"? Oh, it'd be so great if you could select a range of
cells and then do Control-whatever and it would make them all negative.


--
jenniferlawhp
------------------------------------------------------------------------
jenniferlawhp's Profile: http://www.excelforum.com/member.php...o&userid=26137
View this thread: http://www.excelforum.com/showthread...hreadid=394637

  #2   Report Post  
swatsp0p
 
Posts: n/a
Default


This isn't exactly what you wanted, but it is sure easier than "F2,
home, -" ...

In an unused cell, enter "-1" (no quotes) and copy this cell.

Highlight the range to make negative and Paste Special and select
Multiply

Note: You can use Control-Clicks to select non-adjoining cells prior
to doing the Paste SpecialMultiply if you like.

Done!

HTH

Bruce


--
swatsp0p


------------------------------------------------------------------------
swatsp0p's Profile: http://www.excelforum.com/member.php...o&userid=15101
View this thread: http://www.excelforum.com/showthread...hreadid=394637

  #3   Report Post  
jenniferlawhp
 
Posts: n/a
Default


It's not as simple as I'd like it to be, but that'll work better! Thank
you thank you thank you!


--
jenniferlawhp
------------------------------------------------------------------------
jenniferlawhp's Profile: http://www.excelforum.com/member.php...o&userid=26137
View this thread: http://www.excelforum.com/showthread...hreadid=394637

  #4   Report Post  
swatsp0p
 
Posts: n/a
Default


I'm sure if someone knows of a better way, they will share with us. In
the meantime, I am glad that this will make your task somewhat easier.
Thanks for the feedback, it is always appreciated!

Cheers!

Bruce


--
swatsp0p


------------------------------------------------------------------------
swatsp0p's Profile: http://www.excelforum.com/member.php...o&userid=15101
View this thread: http://www.excelforum.com/showthread...hreadid=394637

  #5   Report Post  
Duke Carey
 
Posts: n/a
Default

If this is something you do quite a bit, you can put this code in your
personal.xls file & assign it to a toolbar button.

NOTE: I've put no error checking in this code
DOUBLE NOTE: One of the MVPs here could probably streamline this code quite
a bit



Sub MakeValuesNegative()
Dim rngTgt As Range
Dim rngNegOne As Range
Dim intRows As Long

Application.ScreenUpdating = False
Set rngTgt = Selection
With ActiveSheet.UsedRange
intRows = .Rows.Count
Set rngNegOne = .Offset(intRows, 0).Resize(1, 1)
End With
rngNegOne = -1
rngNegOne.Copy
rngTgt.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
rngNegOne.Clear
End Sub




"jenniferlawhp" wrote:


It's not as simple as I'd like it to be, but that'll work better! Thank
you thank you thank you!


--
jenniferlawhp
------------------------------------------------------------------------
jenniferlawhp's Profile: http://www.excelforum.com/member.php...o&userid=26137
View this thread: http://www.excelforum.com/showthread...hreadid=394637




  #6   Report Post  
Harlan Grove
 
Posts: n/a
Default

Duke Carey wrote...
....
DOUBLE NOTE: One of the MVPs here could probably streamline
this code quite a bit


MVPs aren't the only one who could streamline this (and remove
bugs).

Sub MakeValuesNegative()
Dim rngTgt As Range
Dim rngNegOne As Range
Dim intRows As Long

Application.ScreenUpdating = False
Set rngTgt = Selection
With ActiveSheet.UsedRange
intRows = .Rows.Count
Set rngNegOne = .Offset(intRows, 0).Resize(1, 1)
End With


You're making the unfounded assumption that UserRange always
begins in row 1. Open a new workbook and enter XYZ in cell
F10. Call up the VB Editor and check what that worksheet's
UsedRange is.

rngNegOne = -1
rngNegOne.Copy
rngTgt.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
rngNegOne.Clear
End Sub


Why screw around with the entire selection if you're only
going to change a single cell. Why not change only the
ActiveCell? Why screw around with Copy and PasteSpecial?


Sub foo()
'overengineered
Dim c As Range, r As Range, s As Boolean

On Error GoTo CleanUp
s = Application.EnableEvents
Application.EnableEvents = False

Set r = Selection.SpecialCells( _
Type:=xlCellTypeConstants, Value:=xlNumbers)

For Each c In r.Cells
c.Value = -c.Value
Next c

CleanUp:
Application.EnableEvents = s

End Sub

  #7   Report Post  
Dave Peterson
 
Posts: n/a
Default

But he used:
With activesheet.usedrange
so he was ok with .offset(introws,0).resize(1,1)



Harlan Grove wrote:

Duke Carey wrote...
...
DOUBLE NOTE: One of the MVPs here could probably streamline
this code quite a bit


MVPs aren't the only one who could streamline this (and remove
bugs).

Sub MakeValuesNegative()
Dim rngTgt As Range
Dim rngNegOne As Range
Dim intRows As Long

Application.ScreenUpdating = False
Set rngTgt = Selection
With ActiveSheet.UsedRange
intRows = .Rows.Count
Set rngNegOne = .Offset(intRows, 0).Resize(1, 1)
End With


You're making the unfounded assumption that UserRange always
begins in row 1. Open a new workbook and enter XYZ in cell
F10. Call up the VB Editor and check what that worksheet's
UsedRange is.

rngNegOne = -1
rngNegOne.Copy
rngTgt.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
rngNegOne.Clear
End Sub


Why screw around with the entire selection if you're only
going to change a single cell. Why not change only the
ActiveCell? Why screw around with Copy and PasteSpecial?

Sub foo()
'overengineered
Dim c As Range, r As Range, s As Boolean

On Error GoTo CleanUp
s = Application.EnableEvents
Application.EnableEvents = False

Set r = Selection.SpecialCells( _
Type:=xlCellTypeConstants, Value:=xlNumbers)

For Each c In r.Cells
c.Value = -c.Value
Next c

CleanUp:
Application.EnableEvents = s

End Sub


--

Dave Peterson
  #8   Report Post  
Harald Staff
 
Posts: n/a
Default

Those things are extremely simple with small macros. Do you know how to use
a macro? Implement a macro? Write a macro?


"jenniferlawhp"
skrev i melding
news:jenniferlawhp.1tk32l_1123689917.7853@excelfor um-nospam.com...

It's not as simple as I'd like it to be, but that'll work better! Thank
you thank you thank you!


--
jenniferlawhp
------------------------------------------------------------------------
jenniferlawhp's Profile:

http://www.excelforum.com/member.php...o&userid=26137
View this thread: http://www.excelforum.com/showthread...hreadid=394637



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Excel option to store trendline's coefficients in cells for use Miguel Saldana Charts and Charting in Excel 9 June 20th 05 08:45 PM
Date & Time mully New Users to Excel 4 May 23rd 05 11:56 AM
Automatically up date time in a cell Mark Excel Discussion (Misc queries) 5 May 12th 05 12:26 AM
clock Wildman Excel Worksheet Functions 2 April 26th 05 10:31 AM
How can I define Erf (the error function) for both negative and p. Kara Excel Discussion (Misc queries) 0 February 7th 05 01:13 AM


All times are GMT +1. The time now is 09:45 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"