大量の関数を複写や移動するとき、参照先アドレスの数値(行)だけ一括で増減したいときがある。
例えばデータ用のシートに対して印刷用のシートからの参照していて、行数の関係が対応していないためそのまま複写できない場合など。
今回は式の中にアドレスが1つだけの場合を想定している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub AddSub() sumValue = InputBox("行加算") For Each cell In Selection targetRowValue = cell.Value ' sheet!A80 If targetRowValue = "" Or Left(targetRowValue, 1) <> "#" Then GoTo brk tmp = InStr(targetRowValue, "!") targetAddress = Mid(targetRowValue, tmp + 1) ' A2 targetSheetName = Left(targetRowValue, tmp) ' sheet! tmp = StrReverse(targetAddress & "9") tmp = Val(tmp) tmp = StrReverse(tmp) targetAddressNum = Left(tmp, Len(tmp) - 1) ' 2 targetAddressAsc = Replace(targetAddress, targetAddressNum, "") ' A cell.Value = targetSheetName & targetAddressAsc & (0 + targetAddressNum + sumValue) brk: Next End Sub |