VBA/Excel/Access/Word/Excel/ActiveCell — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:47, 26 мая 2010
Содержание
- 1 Accesses the PROPER( ) function through the Application.WorksheetFunction object.
- 2 Activate Change
- 3 Activate Next Blank Down
- 4 Activate Next Blank To Right
- 5 a Do-Loop Until loop with IsEmpty
- 6 Check the existence of ActiveCell
- 7 Copy the value from the variable into the cell on the right.
- 8 Do-Until loop and IsEmpty
- 9 Do-While loop with ActiveCell
- 10 Entering a Formula in a Cell
- 11 Entering Text in the Current Cell
- 12 Get the address of ActiveCell
- 13 Go to the Max
- 14 If the value of the active cell is too big, change it
- 15 Moves the active cell up two rows (RowOffset:=-2) and four columns to the right (ColumnOffset:=4):
- 16 Move the active cell by using ActiveCell.Offset
- 17 Move to the new cell, you need to use the Activate or Select method
- 18 Moving to Other Cells
- 19 Repeating Actions with a Loop
- 20 Select ActiveCell and cells to its Left
- 21 Select ActiveCell and cells to its Right
- 22 Select active cell and up to the end
- 23 Select ActiveCell"s range
- 24 Select Current Region
- 25 Select First To Last In Column
- 26 Select First To Last In Row
- 27 Store the location of the active cell and then return it to the stored location
- 28 Swap Text With Cell On Right
- 29 Take the current text value, and add the message "INVALID: " before the text
- 30 Toggles text wrap alignment for selected cells
- 31 Use ActiveCell.Offset to move the curren selection
- 32 Use ActiveCell.SpecialCells(xlLastCell)
- 33 Use all the ordinary numeric operators, like +, -, /, *, and ^.
- 34 Use Do Loop While to change ActiveCell value
- 35 Use if, ElseIf and Else with ActiveCell
- 36 Uses the EntireColumn property, which returns a Range object that consists of a full column:
- 37 Working with the Region around the Active Cell
Accesses the PROPER( ) function through the Application.WorksheetFunction object.
Sub FixText()
ActiveCell.Value = Application.WorksheetFunction.Proper("asdf")
End Sub
Activate Change
Sub DownTen()
ActiveCell.Offset(10, 0).Select
End Sub
Activate Next Blank Down
Sub ActivateNextBlankDown()
ActiveCell.Offset(1, 0).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Activate Next Blank To Right
Sub ActivateNextBlankToRight()
ActiveCell.Offset(0, 1).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(0, 1).Select
Loop
End Sub
a Do-Loop Until loop with IsEmpty
Sub DoLoopUntilDemo()
Do
ActiveCell.value = ActiveCell.value * 2
ActiveCell.offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.value)
End Sub
Check the existence of ActiveCell
Sub activeCell()
If ActiveCell Is Nothing Then End
End Sub
Copy the value from the variable into the cell on the right.
Sub SwapTextWithCellOnRight()
Dim CellContent
CellContent = ActiveCell.Value
ActiveCell.Offset(0, 1).Value = CellContent
End Sub
Do-Until loop and IsEmpty
Sub DoUntilDemo()
Do Until IsEmpty(ActiveCell.value)
ActiveCell.value = ActiveCell.value * 2
ActiveCell.offset(1, 0).Select
Loop
End Sub
Do-While loop with ActiveCell
Sub DoWhileDemo()
Do While ActiveCell.value <> Empty
ActiveCell.value = ActiveCell.value * 2
ActiveCell.offset(1, 0).Select
Loop
End Sub
Entering a Formula in a Cell
"Enters the formula =SUM($G$12:$G$22) in the active cell:
Sub fomula()
ActiveCell.Formula = "=SUM($G$12:$G$22)"
End Sub
Entering Text in the Current Cell
Sub MyMacro
ActiveCell.Value = "Hello World!"
End Sub
Get the address of ActiveCell
Sub selectRange()
MsgBox ActiveCell.Address
End Sub
Go to the Max
Sub GoToMax()
Dim WorkRange As Range
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Count = 1 Then
Set WorkRange = Cells
Else
Set WorkRange = Selection
End If
MaxVal = Application.Max(WorkRange)
On Error Resume Next
WorkRange.Find(What:=MaxVal, _
After:=WorkRange.Range("A1"), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False _
).Select
If Err <> 0 Then MsgBox "Max value was not found: " _
& MaxVal
End Sub
If the value of the active cell is too big, change it
Sub MyMacro()
If ActiveCell.Value > 100 Then
ActiveCell.Value = 100
End If
End Sub
Moves the active cell up two rows (RowOffset:=-2) and four columns to the right (ColumnOffset:=4):
Sub offset()
ActiveCell.Offset(RowOffset:=-2, ColumnOffset:=4).Activate
End Sub
Move the active cell by using ActiveCell.Offset
Sub ActivateNextBlankToRight()
ActiveCell.Offset(0, 1).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(0, 1).Select
Loop
End Sub
Move to the new cell, you need to use the Activate or Select method
Sub MyMacro()
" Change the top cell.
ActiveCell.Value = "Top cell"
" Move down one cell.
ActiveCell.Offset(1, 0).Select
" Now this changes the bottom cell.
ActiveCell.Value = "Bottom cell"
End Sub
Moving to Other Cells
Sub MyMacro()
ActiveCell.Value = "Top cell"
ActiveCell.Offset(1, 0) = "Bottom cell"
End Sub
Repeating Actions with a Loop
Sub FormatAllCellsInColumn()
Do Until ActiveCell.Value = ""
ActiveCell.Rows.EntireRow.Select
Selection.Interior.ColorIndex = 35
Selection.Interior.Pattern = xlSolid
ActiveCell.Offset(2, 0).Select
Loop
End Sub
Select ActiveCell and cells to its Left
Sub SelectToLeft()
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
End Sub
Select ActiveCell and cells to its Right
Sub SelectToRight()
Range(ActiveCell, ActiveCell.End(xlToRight)).Select
End Sub
Select active cell and up to the end
Sub SelectUp()
Range(ActiveCell, ActiveCell.End(xlUp)).Select
End Sub
Select ActiveCell"s range
Sub SelectCurrentRegion()
ActiveCell.CurrentRegion.Select
End Sub
Select Current Region
Sub SelectCurrentRegion()
ActiveCell.CurrentRegion.Select
End Sub
Select First To Last In Column
Sub SelectFirstToLastInColumn()
Set TopCell = Cells(1, ActiveCell.Column)
Set BottomCell = Cells(16384, ActiveCell.Column)
If IsEmpty(TopCell) Then Set TopCell = TopCell.End(xlDown)
If IsEmpty(BottomCell) Then Set BottomCell = BottomCell.End(xlUp)
If TopCell.Row = 16384 And BottomCell.Row = 1 Then ActiveCell.Select Else Range(TopCell, BottomCell).Select
End Sub
Select First To Last In Row
Sub SelectFirstToLastInRow()
Set LeftCell = Cells(ActiveCell.Row, 1)
Set RightCell = Cells(ActiveCell.Row, 256)
If IsEmpty(LeftCell) Then Set LeftCell = LeftCell.End(xlToRight)
If IsEmpty(RightCell) Then Set RightCell = RightCell.End(xlToLeft)
If LeftCell.Column = 256 And RightCell.Column = 1 Then ActiveCell.Select Else Range(LeftCell, RightCell).Select
End Sub
Store the location of the active cell and then return it to the stored location
Sub set()
Set myActiveCell = ActiveCell
Set myActiveWorksheet = ActiveSheet
Set myActiveWorkbook = ActiveWorkbook
"take actions here
myActiveWorkbook.Activate
myActiveWorksheet.Activate
myActiveCell.Activate
End Sub
Swap Text With Cell On Right
Sub SwapTextWithCellOnRight()
Dim CellContent
CellContent = ActiveCell.Value
ActiveCell.Value = ActiveCell.Offset(0, 1).Value
End Sub
Take the current text value, and add the message "INVALID: " before the text
Sub MyMacro
ActiveCell.Value = "INVALID: " & ActiveCell.Value
End Sub
Toggles text wrap alignment for selected cells
Sub ToggleWrapText()
If TypeName(Selection) = "Range" Then
Selection.WrapText = Not ActiveCell.WrapText
End If
End Sub
Use ActiveCell.Offset to move the curren selection
Sub ActivateNextBlankDown()
ActiveCell.Offset(1, 0).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Use ActiveCell.SpecialCells(xlLastCell)
Sub SelectActiveArea()
Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).Select
End Sub
Use all the ordinary numeric operators, like +, -, /, *, and ^.
Sub MyMacro
ActiveCell.Value = (ActiveCell.Value * 2) - 1
End Sub
Use Do Loop While to change ActiveCell value
Sub DoLoopWhileDemo()
Do
ActiveCell.value = ActiveCell.value * 2
ActiveCell.offset(1, 0).Select
Loop While ActiveCell.value <> Empty
End Sub
Use if, ElseIf and Else with ActiveCell
Sub MyMacro()
If ActiveCell.Value > 1000 Then
ActiveCell.Offset(0, 1).Value = ActiveCell.Value * 0.05
ElseIf ActiveCell.Value > 500 Then
ActiveCell.Offset(0, 1).Value = ActiveCell.Value * 0.025
Else
ActiveCell.Offset(0, 1).Value = 5
End If
End Sub
Uses the EntireColumn property, which returns a Range object that consists of a full column:
Sub SelectColumn()
ActiveCell.EntireColumn.Select
End Sub
Working with the Region around the Active Cell
Sub font()
With ActiveCell.CurrentRegion.Font
.Name = "Times New Roman"
.Size = 12
.Bold = False
.Italic = False
End With
End Sub