2017-05-16 32 views
0

我想簡化我在Excel中使用的宏以擴大選定範圍。我經常從SAP導出數據,並將這些值作爲文本格式化。將它們改爲數字的簡單方法是將它們乘以1.我有時還需要將值乘以-1或其他任何數字。 我創建了一個可以滿足我需要的宏,但正如您所看到的,它必須找到一個空白單元格,在其中寫入值,乘以選定範圍並刪除該值。我想要一個沒有找到空白單元格並寫入任何內容的過程的宏。如何在Excel中通過VBA將選定範圍與選定數字相乘

Sub macro() 
    Dim Cinitel As Integer 
    Dim PocetRadku As Long 
    Dim PocetSloupcu As Integer 

    Cinitel = InputBox("Enter a number to multiply with") 

    PocetSloupcu = Range("a1").CurrentRegion.Columns.Count 
    PocetRadku = Range("a1").CurrentRegion.Rows.Count 

    Cells(PocetRadku + 1, PocetSloupcu) = Cinitel 
    Cells(PocetRadku + 1, PocetSloupcu).Copy 

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _ 
     SkipBlanks:=True, Transpose:=False 

    Cells(PocetRadku + 1, PocetSloupcu) = "" 

    Calculate 
End Sub 

我不能使用DataObject將一些值放在剪貼板中。

我想出了這樣的事情,但它並沒有明顯的工作:)

Sub macro1() 
    Dim myString As String 
    Dim number As Integer 

    number = InputBox("Enter a number to multiply with") 
    myString = Selection.Address 
    myString.Formula = Application.Evaluate("=" & myString & "*" & number) 

你能幫助我嗎?

+0

你就不能這樣做'Selection.NumberFormat = 「0」',如果你需要一個乘數,然後'Selection.Value = Selection.Value *(-1) ' – Wolfie

回答

0

試試這個..

Sub test1() 

    Dim rng As Range, nbr as integer 

    Set rng = Selection 
    nbr = InputBox("Enter a number to multiply with") 
    rng.Value = Evaluate("IF(" & rng.Address & "<>""""," & _ 
       rng.Address & "*" & nbr & ","""")") 

    Set rng = Nothing 

End Sub