我的代碼正好按照我想要的方式工作,但我不想讓它跳到另一列。我只想讓我的宏在C列內運行,然後退出。 我是新來的VBA在Excel中,所以請原諒我的錯誤。 任何幫助將不勝感激。 在此先感謝。VBA - 只在一列中運行宏
Sub CopyValuetoRange()
'
' CopyValuetoRange Macro
Dim search_range As Range, Block As Range, last_cell As Range
Dim first_address$
Set search_range = ActiveSheet.UsedRange
Set Block = search_range.Find(what:="*", _
after:=search_range.SpecialCells(xlCellTypeLastCell), _
LookIn:=xlValues, searchorder:=xlColumns, searchdirection:=xlDown)
If Block Is Nothing Then Exit Sub
Set Block = Block.CurrentRegion
first_address$ = Block.Address
Do
Block.Select
Selection.End(xlDown).Select
ActiveCell.CurrentRegion.Rows(2).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormulaR1C1 = "=R[-1]C"
'MsgBox "Next Block Range"
Set last_cell = Block.Cells(Block.Rows.Count)
Set Block = search_range.FindNext(after:=last_cell).CurrentRegion
Loop Until Block.Address = first_address$ 'ActiveSheet.Range("C26").End(xlDown).Row
End Sub
下面是我從一些修改,我發現將基本上做同樣的事情,但是它把第一單元值轉換成範圍內的所有細胞。而且這個宏實際上停留在C列,因爲我最近發現它是因爲它不是一個區域,而是一個範圍。
有沒有辦法更改以下內容以將公式添加到指向範圍中第一個單元格的範圍內的所有單元格?
Sub Macro5()
Dim Rng As Range
Dim RngEnd As Range
Dim rngArea As Range
Set Rng = Range("C1")
Set RngEnd = Cells(Rows.Count, Rng.Column).End(xlDown)
If RngEnd.Row < Rng.Row Then Exit Sub
Set Rng = Range(Rng, RngEnd)
On Error GoTo ExitSub
Set Rng = Rng.SpecialCells(xlCellTypeConstants)
For Each rngArea In Rng.Areas
rngArea.Value = rngArea.Cells(Rng.Rows.Count, 1).Value
Next rngArea
ExitSub:
' Macro will exit here if the range is empty.
End Sub
如果你描述你想要的宏來完成(不是它不應該這樣做)什麼會更容易些。 –
我的理由是不清楚。從「C1」開始,向下看活動單元區域,一旦發現除了當前區域中的頂部單元之外(僅在組合C內),將FormulaR1C1 =「= R [-1] C」應用於這些單元中的每一個(實質上使頂部單元格可編輯,並且該區域中的所有單元格將反映相同),在更改這些單元格公式之後,轉到C列中下一個活動單元格區域的下方,並重復執行相同的操作該地區等... – cheapkid1