在VBA中执行IFfunction

我使用一个= IF函数

=IF(RIGHT(A1;1)="-";"-"&LEFT(A1;LEN(A1)-1);A1)*1 

将一个减号从单元格的末尾移到开头,但我想在macros中使用它,以便在同一 (或相同的select )上执行…

1)使用For Each ….循环结构遍历一个范围内的每个单元格。 2)如果你想把123到123的“数字”转换成合适的数字而不是文本,使用Val命令把一个string转换成一个数字。 但请注意,如果您的单元格中包含“ABC-”之类的单元格,则这将成为-ABC,然后VBA将尝试将其转换为数字,并因此生成零

 Sub MoveMinus() Dim c As Range For Each c In Intersect(Selection, Selection.Worksheet.UsedRange) If (Right(c, 1) = "-") Then c = Val("-" & Left(c, Len(c) - 1)) 'Val to make the result numeric End If Next End Sub