[[20170101193845]] 『数式と書式の設定方法』(yuusuke) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『数式と書式の設定方法』(yuusuke)

新年早々ですがよろしくお願いします。
アクティブセルに以下のような文字と数式(書式共)挿入したいのですが
★部分の表記方法をご指導お願いします
★部分はこのフォーム挿入後仕切と定価を入力しその「掛率」をパーセントで
表示するものです。

アクティブセルに
   S      T
スペック    メーカー名
商社      メーカー名
        定価
        仕切
        掛率
 ↑ここに仕切÷定価の数式と書式の計算式を挿入
例としては 下二桁"25.56%"と表示
マクロを初心者ですのでほかの方法があればご教授ください。

Sub 参考フォーム()

    With ActiveCell
        If .Column <> 19 Or .Row Mod 2 <> 0 Then
            MsgBox "( S列の偶数行 )のセルを選択して実行してください"
            Exit Sub
        End If
        ActiveCell.Value = "スペック"
        ActiveCell.Offset(, 1).Value = "メーカー名"
        ActiveCell.Offset(1, 0).Value = "商社"
        ActiveCell.Offset(1, 1).Value = "メーカー名"
        ActiveCell.Offset(2, 1).Value = "定価"
        ActiveCell.Offset(3, 1).Value = "仕切"
        ActiveCell.Offset(4, 1).Value = "掛率"
        ActiveCell.Offset(4, 0).Value = Format(数式★
    End With
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


二つコメントします。

>ActiveCell.Offset(4, 0).Value = Format(数式★
のところですが、これは値をセットしようとしています。
セルの書式情報も整える必要があるのでは?
これは書式を変更する動作をマクロ記録をとれば、
コードがわかると思います。
 
ActiveCellをそのまま対象にするのがよいかはさて置いて、
せっかく

  With ActiveCellとしているのですから、
     .Value = "スペック"
 などと書くのがよいのではないですか?

(γ) 2017/01/01(日) 20:10


(γ) さん
ありがとうございます。.Valueで試してみます
マクロの記録で書式はわかりますが
数式の部分が、不特定なセルなので イマイチわかりません。。。
    ActiveCell.FormulaR1C1 = "=R[-1]C/R[-2]C"
    Range("S34").Select
    Selection.NumberFormatLocal = "0.00%"

よろしくお願いします。

(yuusuke) 2017/01/01(日) 20:43


        .Offset(4, 0).FormulaR1C1 = "=R[-1]C/R[-2]C"
        .Offset(4, 0).NumberFormatLocal = "0.00%"
のようなことでよいのかな?
分母の数値が入っていないと、ゼロ割でエラーになるけれどもね。

(γ) 2017/01/01(日) 21:14


A1形式とR1C1形式のことを知っていないと意味がわからないかな。

http://www.asahi-net.or.jp/~ef2o-inue/shiki/sub03_010_02.html
http://www.geocities.jp/laut6/r1c1/r1c1.html
などを参照してください。

この場合、計算式を入れるセルからの相対参照で指定すると、
どの位置でも同じ計算式になるのがメリットです。

(γ) 2017/01/01(日) 23:02


(γ)さん
ありがとうございます。
以下のようにしてみたのですがいかがでしょうか
違う仕方がありますか 特に対象セルの処理纏め方など
方法があれば教授ください。よろしくお願いします。
    With ActiveCell
        If .Column <> 19 Or .Row Mod 2 <> 0 Then
            MsgBox "[ S列の偶数行 ]のセルを選択して実行してください"
            Exit Sub
        End If
        .Value = "スペック"
        .Offset(, 1).Value = "メーカー名"
        .Offset(1, 0).Value = "商社"
        .Offset(1, 1).Value = "メーカー名"
        .Offset(2, 1).Value = "定価"
        .Offset(3, 1).Value = "仕切"
        .Offset(4, 1).Value = "掛率"
        .Offset(4, 0).FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-2]C,0)"
        .Offset(4, 0).NumberFormatLocal = "0.00%"

    End With
        ActiveCell.Offset(2, 0).Select
     VBA.AppActivate Excel.Application.Caption

(yuusuke) 2017/01/02(月) 00:36


よろしいのでは。

ところで、
「数式の部分が、不特定なセルなので」のあたりは、
理解されたのですか?
ご自分の言葉で理解した内容をコメントされた方が良いですね。

対象セルの纏め方とは?
それはあなたが決めたことだろうから、何も申し上げることはないですね。

なお、セルの指定方法として、Offsetを使わず、Cells(j,k)を使う方法もありますね。

(γ) 2017/01/02(月) 08:07


(γ) さん
ありがとうございました。
cells()の方法でも試してみます。

(yuusuke) 2017/01/02(月) 19:36


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.