Excel VBA 선택한 셀의 값을 일괄 적으로 X 배
예를 들어 실험 데이터를 정리할 때 V를 mV 단위로 고치고 싶을 때 편리합니다.
매크로를 사용하지 않는 경우는, 가까이에 1,000배나 1/0000배하기 위해서만의 표를 만들거나 합니다만,
이 문서의 매크로를 사용하면 처리할 셀을 범위 선택하고 매크로를 실행하면 됩니다.
※VBA에서의 조작은 Undo를 위한 이력이 남지 않으므로 주의해 주세요.
Sub MultiplyBy1000()
Call MultiplyByX(Selection, 1000)
End Sub
Sub DivideBy1000()
Call MultiplyByX(Selection, 0.001)
End Sub
Sub MultiplyByX(ByRef R As Range, X As Double)
Dim TempValue As Variant
Dim NumberOfRows, NumberOfColumns, AreaIndex, RowIndex, ColIndex As Integer
For AreaIndex = 1 To R.Areas.Count
TempValue = R.Areas(AreaIndex).Value ' 指定の範囲の値を変数にコピーする。
' TempValue (Variant変数)に格納される値はRangeオブジェクトが指す範囲に応じて配列かスカラのどちらかになる。
' 連続した複数セルが選択されている場合は2D配列(1行や1列でも2D)
' 単一セルの場合はスカラ変数
If IsArray(TempValue) Then '複数セルの場合
NumberOfColumns = UBound(TempValue, 1)
NumberOfRows = UBound(TempValue, 2)
For ColIndex = 1 To NumberOfColumns
For RowIndex = 1 To NumberOfRows
TempValue(ColIndex, RowIndex) = TempValue(ColIndex, RowIndex) * X
Next
Next
Else '単一セルの場合
TempValue = TempValue * X
End If
R.Areas(AreaIndex).Value = TempValue
Next
End Sub
다음 코드로 컨텍스트 메뉴에 추가하면 매우 유용합니다.
Sub AddContextMenu()
Dim myCommandBar As CommandBar
Dim myCommandBarControl As CommandBarControl
Set myCommandBar = Application.CommandBars("Cell")
myCommandBar.Reset
'↓常に必要な機能ではないのでExcelが終了したら自動で登録が解除されるようにTemporary=Trueにしています。
Set myCommandBarControl = Application.CommandBars("Cell").Controls.Add(Before:=5, Temporary:=True, Type:=msoControlPopup)
With myCommandBarControl
.Caption = "定数をかける"
With .Controls.Add
.Caption = "x1000"
.OnAction = "MultiplyBy1000"
End With
With .Controls.Add
.Caption = "1/1000"
.OnAction = "DivideBy1000"
End With
End With
End Sub
참고
VBA(Excel) 고속화 대책 -서열화편-
h tp : 작은 m / 산호 / MS / C46 A30C62 그림 154077 A0C7
오른쪽 클릭 메뉴나 하위 메뉴에 매크로를 등록/삭제하려면
h tp // w w. 오 t r t. 이. jp / ai t / archi c0s / 1408/25 / 네 ws030. HTML
Reference
이 문제에 관하여(Excel VBA 선택한 셀의 값을 일괄 적으로 X 배), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ktyubeshi/items/083b5f2452bbd9f82c9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)