重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

計算式が一部ミスっていまして、計算式を修正したいのですが、中々上手くいきません。結果は全部"0"で返ってきます。

ソースは以下になります。

Sub 全て修正()
Dim ws As Worksheet
k = 1
For Each ws In ActiveWorkbook.Sheets
ws.Range("G15:G32,G36:G53,G57:G74") = F15 * 3 / 256
k = k + 1
Next
End Sub

計算式は 『 F15 * 3 / 256 』 となのですが、
F15 では関数処理をしており、更に元データは以下のような関数処理をそれぞれ行っている状態です。

   C列        D列    E列   F列 
  データ      LIGHT()  LEFT() HEX2DEC()
F50A0000000281  000281   0002    2

こんな場合はどんな方法で処理すればよろしいですか?
アドバイスお願い致します。

A 回答 (4件)

(1)エクセルVBAでは数式はRange(1つのセル).Formula="=A1+1"のように、具体的(絶対的)に


A1のようにいれます。
Range(2つ以上のセル)Formula=(何かの表現)も出来る。
値の場合
Sub test01()
Range("A1: A5") = "abc"
End Sub
は可能。
式のな場合は
Sub test01()
Range("A1: A5") = "=B1+1"
End Sub
でA2には=B2+1のように変化させてくれる。
Sub test01()
Range("A1: A5,A10:A15") = "=B1+1"
End Sub
の場合はA1:A5、A10:A15について、正しく式を変化させてくれる。
以上で複数セルへの同型の式の一度でセットと、セル変化
がOKであることをチェックしました。
>F15 では関数処理をしており、更に元データは以下のような関数処理をそれぞれ行っている状態です。
使っているセルの値が、直接入力されたものでの、関数で
計算されたものでも関係ありません。関数でF15と言うときのF15はそのセルの「値」だけを問題にしてます。
○本件ws.Range("G15:G32,G36:G53,G57:G74") = F15 * 3 / 256
とありますが、
(1)Formulaがない
(2)関数式が””で囲まれていない
が気になりますが、問題ではないでしょうか。
    • good
    • 0
この回答へのお礼

ご指摘されている通りでした。
(2)関数式が””で囲まれていない → ””で囲む事により、 結果が得られるようになりました。
アドバイスありがとうございましたm(_ _)m

お礼日時:2004/09/20 13:02

こう言う意味?



ws.Range("G15:G32,G36:G53,G57:G74") = F15 * 3 / 256
       ↓
ws.Range("G15:G32,G36:G53,G57:G74") = "=F15 * 3 / 256"

あと、変数k は意味をなしてませんね。
    • good
    • 0
この回答へのお礼

>あと、変数k は意味をなしてませんね。
ご指摘ありがとございます。
For文と変数の使用がまだまだ使いこなせて無いようです…。
もう少しがんばってVBA使いこなせるよう成りたいですね。
アドバイスありがとうございました。

お礼日時:2004/09/20 13:07

書式に問題があるのでは?


小数点以下の桁数が表示されていなかったりしませんか?
    • good
    • 0

Excelのセルの名前とVBAで使用できる変数がごっちゃになっているのではないでしょうか?



VBAの中で何の定義もなしにいきなり
F15を登場させたのがまずいのではないでしょうか。

すなわち、F15はVBA上では何にも入っていないので0が帰ってくるのではないでしょうか。

ws.Range("F15").value * 3 / 256

などとやってみてはいかがでしょう?
    • good
    • 0

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