• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAを用いて手動で選択した範囲の数式の置き換え)

VBAを使って選択範囲の数式を置き換える方法

このQ&Aのポイント
  • エクセル2007での数値入力方法を効率化するために、VBAを使用して手動で選択した範囲の数式を置き換える方法を紹介します。
  • 手動で入力した数値や式を効率的に計算するためには、VBAを活用することが有効です。本記事では、VBAを使って選択範囲の数式を一括で置き換える方法について解説します。
  • VBAを使用して、エクセルの選択範囲内の数式を一括で置き換える方法について説明します。手動で数値入力をする際の効率を向上させたい場合には、本記事の手順を参考にしてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

Sub macro1()  Dim h As Range  Dim Target As Range  On Error Resume Next  Set Target = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)  If Target Is Nothing Then  Set Target = Selection.SpecialCells(xlCellTypeFormulas, xlNumbers)  Else  Set Target = Union(Target, Selection.SpecialCells(xlCellTypeFormulas))  End If  For Each h In Target   h.Formula = "=" & Application.Evaluate(h.Formula)  Next End Sub 簡易版です。なので,ご質問で明記されていない入力内容が選択範囲内にあった場合は,意図しない結果となるかもしれません。 駄目な例: ="a" と記入されていた場合など。

Boogie-Pop
質問者

お礼

ありがとうございました。 自分で勉強してちょこっと書き足して完全版ができそうです。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

多分質問者のやろうとしていることは、数を数式にVBAで変化させ、入力待ちにして、何かの数を人間の入力で入れて計算(質問では加減どまりらしい)をしたい。 初心者の考えそうな珍奇な方法だな。 >100x20ほどのセルのうち、 質問の操作の対象セルはどうなるを書かないと質問にならないのでは。 そのセルを選択(決める)条件は何なのか。質問者の(総合的?)判断で無いと判ら無いのか? ーー 質問の主旨を間違えていなければ、私の思いついた「珍奇な」方法 (1)テキストボックスを1つシートに設ける (2)シートのSelection_Changeイベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveCell.Formula = "=" & Val(Target.Value) & "+" & Val(TextBox1.Text) End Sub 判らなければGoogleで「Worksheet_SelectionChange」で照会し勉強のこと。 === テキストボックスに、加える数を入力。毎セルに置いて、先に行うこと(忘れやすいから注意)。引き算したい場合はマイナスをつけて入力。 シートのセルをクリック そのセルの値にテキストボックスの値を加えた数をそのセルに設定(自動計算)。 空白のセルは0の扱い。テキストボックスも空白は0の扱い。 ーー 数式バーへのVBAによる入力のコントロールの方法が判らない(高等技術?API?)ので上記で辛抱。

Boogie-Pop
質問者

お礼

回答ありがとうございました。 自分の説明が悪くてわかりづらくてすいませんでした。 自分でも今の入力の方法がアナログな効率の悪いものだと自覚しており、 今回の回答を参考に勉強させていただきます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 範囲指定した後にマクロを実行してみてください。 Sub test() Dim c As Range For Each c In Selection If c <> "" And IsNumeric(c) Then c = "=" & c End If Next c End Sub こんな感じではどうでしょうか?m(__)m

Boogie-Pop
質問者

お礼

ありがとうございました。 シンプルな書き方もあるんですね

  • silverfd
  • ベストアンサー率57% (204/356)
回答No.1

これでできましたよ。 Sub sanple() Dim i As Range ActiveSheet.UsedRange.Select For Each i In Selection i.Value = "=" & i Next i End Sub

Boogie-Pop
質問者

お礼

早速の回答ありがとうございました。 自宅のPCのエクセル2002(?)では動作が違うという新たな発見もありました。 参考にして勉強します。

関連するQ&A