Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
既存のセルの値+計算式の方法
投稿日時: 20/01/03 01:33:32
投稿者: OkabeS

Selection.Formulaにて選択されている範囲について、既存のセルの値をそのままに、
計算式をそこに追加するにはどうしたら良いでしょうか?(セルに上書きしたいです)
以下のコードだと、Cells(1, 2)の値が選択範囲に適用されてしまいます。
Selection.Formula =Cells(1, 2)+10
 
どなたかわかる方お願いいたします。
 
<例>

A列
2
3
5
 
◆A列に欲しい結果(+10)
A列
12
13
15
 
◆以下コードで出てしまう結果
Selection.Formula =Cells(1, 2)+10
A列
12
12
12

回答
投稿日時: 20/01/03 07:25:48
投稿者: simple

Formulaプロパティは、ワークシート上で使う計算式を入れる目的のものです。
それはイコールで始まっていないし、セルに入れる数式として適当ではありません。
Cells(1,2)などという言い方は、ワークシートに入力する式として使えないからです。
VBAのコードに用いるものですから。
 
また、そもそもですが、A1に10を加えてその結果をA1に入れるということであれば、
それは、A1に式を組み込むことでは対応できませんよ。
自分自身を参照する式になりますから、循環参照となってしまいます。
 
そもそものあたりから、再考してください。

回答
投稿日時: 20/01/03 09:23:18
投稿者: よろずや

'こういうこと?
 
Option Explicit
Sub test()
    Dim r As Range
    For Each r In Selection
        r.Formula = "=" & r.Value & "+" & 10
    Next r
End Sub

回答
投稿日時: 20/01/03 10:55:09
投稿者: WinArrow
投稿者のウェブサイトに移動

>Selection.Formula =Cells(1, 2)+10
このコードは、手入力したものですか?
 
>Cells(1, 2)
は、B1セルです。
ですから、A列セルが「12」になるわけがない。
 
掲示板にコードを記述する際は、コードペインからコピペしましょう。

回答
投稿日時: 20/01/03 11:11:47
投稿者: simple

追記します。
 
> 既存のセルの値をそのままに、
> 計算式をそこに追加するにはどうしたら良いでしょうか?

そういうことはできません。
計算式を入れたら、その計算結果に見合う数値がValueにはセットされるのです。
既存の数値を残したままなどということはできません。
 
結局、実行したいことは、こういうことではないんですか?

  Dim r As Range
  For Each r In Selection
      r.Value = r.Value + 10
  Next

投稿日時: 20/01/03 12:27:55
投稿者: OkabeS

simple様
よろずや様
WinArrow様
 
ご回答いただきありがとうございます。
根本的に分かっていなかった部分が、ある程度理解出来ました。
教えて頂いたコードで解決することが出来ました。
ありがとうございました。