エクセル2007にて手動で数値入力をしています。
効率の悪い方法なのですが、
入力方法自体はこのまま、変えずにやりたいと思っています。
入力内容は、例えば 100x20ほどのセルのあるところ、空白のところに「2」と入れたり
しばらく後に先ほどの「2」のところに「=2+4」と付け足したり
さらにしばらく後に「=2+4+5」と付け足したりしています。

「したいこと」はある程度入力が進んだところで、
100x20ほどのセルを「マウスなどで選択」し、その選択した範囲のセルの中身の
「=2+4+5」のセルを計算し「=11」に置き換え、(左に”=”を付けたい)
「3」や「=3」「=+3」のセルを「=3」に置き換え、(やはり左に”=”を付けたい)
ただし「空白」のセルは「空白」のままにして置きたいのです。

Q1)上記の「したいこと」をVBAでできるでしょうか
Q2)Q1に加えて 「0」のセルは「=0」と置き換えられるでしょうか
Q3)間違ってイコール無しで入力した「1+2+3」も計算して「=6」(左に”=”)にできるでしょうか
Q4)VBAで実際に動くものを組んでもらえないでしょうか
後々、最終的には自分で勉強してVBAを組めるようになりたいのですが
今必要なのは上記の操作のみなので、実際にVBAで作成したものが欲しいです。

現在はマウスで選択、形式選択(値)貼り付けして、手動でその都度”=”を付け足しています

このQ&Aに関連する最新のQ&A

A 回答 (4件)

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"
と記入されていた場合など。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/15 19:13

多分質問者のやろうとしていることは、数を数式に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?)ので上記で辛抱。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/15 19:23

こんばんは!


一例です。
範囲指定した後にマクロを実行してみてください。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/15 19:11

これでできましたよ。




Sub sanple()

Dim i As Range
ActiveSheet.UsedRange.Select

For Each i In Selection
i.Value = "=" & i
Next i

End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/15 19:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル(マクロ記録)

よろしくお願いします。
エクセルで、印刷マクロを作ろうと考えています。
             (基本、入門者です)
マクロ記録で、作っていますが、
記録終了するたびに「 印刷 」がかかっては、
用紙が何枚あっても足りません。

いい考えがありましたら、お教えください。
お願いします。

Aベストアンサー

#3の回答者です。

>出来たら、この i=1 の意味を教えていただけませんでしょうか?
単に、それはページ数です。

ヘルプを引用します。(PrintOut で調べました)

式.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)

From オプション 印刷を開始するページの番号を指定します。この引数を省略すると、最初のページから印刷します。
To オプション 印刷を終了するページの番号を指定します。この引数を省略すると、最後のページまで印刷します。

と出てきます。

QEXCEL2007の範囲選択で、選択した範囲にはグレーの色がつくと思い

EXCEL2007の範囲選択で、選択した範囲にはグレーの色がつくと思いますが
非常に薄くついていないかのようにも見えます。
よーく見るとついているようですが・・・。

この濃度?を変更するにはどうしたらいいでしょうか?
ディスプレイについている明るさボタンはちょっと押してみましたがさほど変化はありません。

よろしくお願いします。

Aベストアンサー

画面の色が白飛びしているようです。

モニタのコントラストと明るさの調節が必要。

高解像度ワイド液晶ディスプレイ選び
液晶ディスプレイとカラーマネージメント 編
http://miyahan.com/me/report/computer/070125_WUXGA_LCD/ColorManagement_test.html

下段の
■ ディスプレイ表示テスト
この画面を見ながら調節してください。

白飛びと黒つぶれが表示できれば良好。

Qエクセル マクロコードの記述の勉強

独学でエクセルでのマクロのコード記述ができるようになりたいのですが、コードがかける人はどのようにしてかけるようになったのでしょうか?

プログラミング関係にはまったくの初心者なので、入門本を立ち読み程度読んでみたのですが、「面白そうだが、かなり手強そう」というような印象でした。

現実的な問題として、実際にコードをかける人は、プログラミング関係の学校等で学んだ人ぐらいしかいないのでしょうか?

めざすレベルはエクセルでこうしたいと考えたものを調べながらコードをかける程度のレベルです。

Aベストアンサー

> 実際にコードをかける人は、プログラミング関係の
> 学校等で学んだ人ぐらいしかいないのでしょうか?

そんな事ないです。私も独学で覚えましたから。

エクセルはマクロ記録がありますので、実際の操作を記録して書かれたコードを追っていったり、書き直したり出来ます。
VisualBasicEditor画面でコードにカーソルを置き、F1キーを押すとVBAヘルプ(たしか標準ではインストールされないので追加インストールの必要がある)が開くので、意味を調べたり、サンプルコードを見たりして覚えて行きました。
ネットにも沢山サンプルがありますし。

変数の使い方とforやif等を覚えてマクロ記録を直すだけでも結構便利になります。

Q点数を数値に置き換える数式

すいません。
テストの点数で、
91~100点を「10」、81点~90点を「9」、・・・、1~10点「1」、0点は「0」という感じに、10点ごとに0~10の数値にしたいのですが、数式を教えてください。

Aベストアンサー

こういうのはVLOOKUP関数のTRUE型に限る。
E1:E12に(どこでも良い)
00
11
112
213
314
415
516
617
718
819
9110
101
の表を作る。
E列が点数、F列が(クラス)コードです。
点数の区分けは昇順にして作っておくこと。
A列に点数を入れるとして
B1に
=VLOOKUP(A1,$E$1:$F$12,2,TRUE)
を入れて、下へ式を複写する。
点数は制すうちであること。
0-100を超える範囲外の点はないものとする。
A列空白セルのB列のエラー防止は
=IF(A1="","",VLOOKUP(A1,$E$1:$F$12,2,TRUE))
のようにする。

Qエクセルについているマクロが出てこない・・・

 エクセルをひらき、ツール→マクロ→マクロでマクロの作成ができると聞きましたが、私のエクセル2002ではマクロのその機能が空欄状態です。復帰や回復できる方法を教えて下さい。

Aベストアンサー

(1)自分でマクロの記録を採る。
    ツールーマクロー新しいマクロの記録
(2)または他人がマクロの記録をとった。
   (3)他人がVBAコード(プログラム)を組んだ
    ツールーマクローVBEープログラム作成
場合に出てくる。(1)(2)(3)ともやっていないから、出てこないのは当然。
(1)なぞはマクロの画面でマクロー編集でコードが見れます。
ーーー
本でもWEBでも、マクロに関する本1冊か、「エクセル マクロ」でWEB照会して、勉強し。予備知識をえるべきです。

QExcelで数式の範囲指定の数値を4ずつ増加させる

A1=min(B1:B4)
A2=min(B5:B8)
A3=min(B9:B12)





上記のような形で数式を並べたいのですが、
数式内の数値を上記のように加算する方法が見つかりません。
どなたかよい方法をご存じないでしょうか?

ちなみに現在はオートフィルで1ずつ増加させたのちに、
他の場所にコピーし、フィルタで邪魔なものを削除し、また貼り付けるという方法をとっています。
これだと手間がかかるので、さらに簡単な方法をお知りの方、アドバイス宜しくお願いします。

Aベストアンサー

A1セルに次の式を入力して下方にドラッグコピーします。

=MIN(INDIRECT("B"&ROW(A1)*4-3):INDIRECT("B"&ROW(A1)*4))

Qエクセル2010で作成したマクロ

エクセル2010で作成したマクロブックがあります。
このエクセルを知人にメールで送りました。

知人のエクセルは2007です。
マクロブックのフォームボタンを押しても何も動作しない状況との事です。

エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

素人の質問で申し訳ありませんが、ご指導お願いいたします。

Aベストアンサー

>エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

ご相談の状況からすると、まずそういう事はありません。
まぁ2010でしか動かない内容であなたがマクロを作成した可能性は確かにありますが、その場合でも「何も動作しない」という事はありません。ふつーにエラーが出て止まります。



一応あなたの側で確認しておくべきポイントとしては、
○間違ったブックを送っていないか再確認する
 ・ちゃんとマクロを付けたブックを送ったか確認する
 ・名前を付けて保存でファイルの形式をマクロ有効ブックにして保存したのを送ったか再確認する
といったところをよく確認してください


先方に対してあなたが確認すべきポイントとしては、
○「何も起こらない」とは、具体的にどんな状況なのか再確認する
 ・ホントにうんともすんとも反応が無いということなのか
 ・実は何かエラーメッセージっぽいダイアログが現れて、OKをクリックしてもマクロが動作した様子が無いとかの状況では無かったか



具体的な状況が明らかになったら、ようやく対処を検討する事ができるようになります。
●そもそもどういうマクロを作成したのか、ご自分の作成したマクロをよく確認して、「反応が現れない」マクロを書いてたんじゃないのか再確認する
 たとえば無意味にon error resume nextのような仕込みをしてたりしないか
 たとえば不適切なデータに対して何も作動せずに終わってしまうようなそもそも作りにしてたんじゃないか
 とか。

●実は何かダイアログが出てたのなら、具体的にどんなダイアログなのか正確に聞き取って、あなたの方で対処を考える
 「マクロが無効になってる」のなら、マクロを有効にして実行するように伝える
 とか。

>エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

ご相談の状況からすると、まずそういう事はありません。
まぁ2010でしか動かない内容であなたがマクロを作成した可能性は確かにありますが、その場合でも「何も動作しない」という事はありません。ふつーにエラーが出て止まります。



一応あなたの側で確認しておくべきポイントとしては、
○間違ったブックを送っていないか再確認する
 ・ちゃんとマクロを付けたブックを送ったか確認する
 ・名前を付けて保存でファイル...続きを読む

Qエクセル2007 VBA 線の種類を変数に置き換え

線の種類を変数に置き換える場合、罫線だと上手くいったのですが、
外枠の線の種類を変数で指定する場合の記載方法がわかりません。。。

外枠線の種類を変数に置き換える場合の記述方法を教えて頂けませんでしょうか。

■罫線(成功)
nL = Selection.Borders.LineStyle
nW = Selection.Borders.Weight

□外枠線(失敗)
nL = Selection.BorderAround_LineStyle
nW = Selection.BorderAround_Weight


何卒宜しくお願い致します。

Aベストアンサー

たぶん、
BorderAround_LineStyle
こういう書き方はないでしょう。勝手な書き方をしてできないといわれてもね。

BorderAroundは、セル範囲の周りに罫線を書けというメソッドなので、それを変数に入れようとしても入らないでしょう。

BorderAroundはメソッドなので、書くことはできるが、これでプロパティの取得はできません。線種などの取得は、質問の(成功)にあるように、Bordersコレクションを使うでしょう。
Selection.Borders(xlEdgeTop).LineStyle
とか。

二重の無理に見えるが。

Qエクセルで作成したマクロが他のシートに反映しない

必要に迫られ始めてマクロをエクセル上で作成してみました。(初心者)
そのマクロを違うエクセルファイル上でも反映させたいのですが
マクロを作ったおおもと(最初)のファイルを閉じてしまうと違うエクセルファイルを開いてもマクロが反映されていません。
マクロでの命令内容としては 
エクセル上の数字の羅列→グラフ作成→上書き保存 という手順で作りました。
他のエクセルファイルも同じように数字の羅列があります。それを同じ作業(グラフ作成→上書き保存)したいのです。
一度作ったマクロを他のエクセルファイルにも反映させるにはどうしたら良いのでしょうか?
説明がわかりにくくてすみません。
よろしくお願いします。

Aベストアンサー

マクロの記録先を「個人用マクロブック」にするのが良いと思います。
一回マクロの記録を行い「保存先」を「個人用マクロブック」にします。するとPERSONAL.XLSという特別なブックが作成されます。

このブックの標準モジュールシートに先に作ったマクロを貼り付けてください。

そうすればエクセルを開くと、どのブックでもマクロが実行可能になります

QVBAで最も近い数値に置き換えを行う方法

VBAで、sheet(1)に以下のような数値が入力されているとします。
1.0
1.2
1.4

END
※入力されている数値の数は場合によって変化します

ここで、sheet(2)に以下のような数値が入力されていた場合に、マクロ実行後にこれらの数値をsheet(1)に入力されている値に置き換えたいと考えています(同じ数値が無い場合は、差が最も小さい数値を選択)。
1.01
1.03
1.05
1.07
1.09
1.11


どのようにマクロを組めばよろしいでしょうか?

Aベストアンサー

質問例では0.2刻みですが、もしそのような規則性がない場合でも対応できるようにします。
sheet(2)のB1に以下の式を入力して下方向にコピーすると、絶対値の差が最小の行の値を表示します。(それが複数行ある場合は下の行が優先)

=INDEX(Sheet1!$A:$A,MAX(INDEX((ABS(A1-Sheet1!$A$1:$A$3)=MIN(INDEX(ABS(A1-Sheet1!$A$1:$A$3),)))*ROW(Sheet1!$A$1:$A$3),)))


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング