- ベストアンサー
VBAアクティブセルに対しての作業に関する質問
- VBAのアクティブセルに対する作業について質問があります。具体的には、アクティブセルを指定した段階で、セルの値をコピーして、オフセットした位置にペーストしたい場合と、オフセットした位置までフィルダウンさせたい場合のVBAのやり方やプログラムの表記について教えてください。
- 具体的な操作例として、アクティブセルを指定した段階で、セルの値をコピーして、オフセットした位置にペーストする場合、最初にアクティブセルからコピーし、オフセットした位置までペーストする方法を教えてください。
- また、アクティブセルを指定した段階で、セルの値をコピーして、オフセットした位置までフィルダウンさせる場合、具体的な操作例やVBAのプログラムの組み合わせ方についても教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)のVBAの一例としては以下の様なVBAとなります。 Sub QNo9157101_VBA_アクティブセルに対しての作業に関して1() Const OffsetValueCell = "O1991" Dim buf As Variant, myOffset As Long buf = Range(OffsetValueCell).Value If buf <> "" And IsNumeric(buf) Then _ myOffset = Int(buf) With Application .ScreenUpdating = False .Calculation = xlManual End With If buf = myOffset And myOffset + ActiveCell.Row >= 1 _ And myOffset + ActiveCell.Row <= Rows.Count Then ActiveCell.Offset(myOffset).Value = ActiveCell.Value Else MsgBox OffsetValueCell _ & "セルに入力された値が、現在選択されている" _ & "セルの行番号に対して有効な範囲にありません" End If With Application .Calculation = xlAutomatic .ScreenUpdating = True End With End Sub (2)のVBAの一例としては以下の様なVBAとなります。 Sub QNo9157101_VBA_アクティブセルに対しての作業に関して2() Const OffsetValueCell = "O1991" Dim buf As Variant, myOffset As Long buf = Range(OffsetValueCell).Value If buf <> "" And IsNumeric(buf) Then _ myOffset = Int(buf) With Application .ScreenUpdating = False .Calculation = xlManual End With If buf = myOffset And myOffset + ActiveCell.Row >= 1 _ And myOffset + ActiveCell.Row <= Rows.Count Then Range(ActiveCell, ActiveCell.Offset(myOffset)).Value = ActiveCell.Value Else MsgBox OffsetValueCell _ & "セルに入力された値が、現在選択されている" _ & "セルの行番号に対して有効な範囲にありません" End If With Application .Calculation = xlAutomatic .ScreenUpdating = True End With End Sub