よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13146 / inTopicNo.1)  表示形式がリセットされる
  
□投稿者/ 通りすがりの太陽 -(2017/04/11(Tue) 21:19:13)
    よね様

    いつもお世話になっております。

    この度、SelectCase とNumberFormatLocalの組み合わせで困ったことが起きております。

    桁数の異なるデータの集合があるのですが、それを指定のセルの数字によって判定し、表示形式を変更ことが目的で以下のコードを作成しました。

    Select Case Range("K" & i + 1).Value
     Case 0
      Range("M" & i & ":M" & i + 3).NumberFormatLocal = "#0"
      Range("N" & i & ":N" & i + 3).NumberFormatLocal = "#,###.0"
      Range("O" & i & ":O" & i + 3).NumberFormatLocal = "#,###.0"
      Range("P" & i & ":P" & i + 3).NumberFormatLocal = "#,###.#0"
      Range("Q" & i & ":Q" & i + 3).NumberFormatLocal = "#,##0"
      Range("R" & i & ":M" & i + 3).NumberFormatLocal = "#,##0"
     Case 1
       …
    End Select

    するとステップインの状態では各NumberFormatLocalで意図通りに表示形式が変更されていくのですが、
    それが最終行のEnd Selectへコードが移ったとたんに全て#,##0へ変更(リセット?)されてしまうのです。

    どのような仕様が原因なのでしょうか?ご存知でしたらご教授ください。
引用返信/返信 削除キー/
■13147 / inTopicNo.2)  Re[1]: 表示形式がリセットされる
□投稿者/ よねさん -(2017/04/12(Wed) 08:12:49)
    iが1,2・・・と変化するとすれば
    i=1で
    K2セルの値に応じて M1:M4セルの表示形式を変えています
    
    i=2で
    K3セルの値に応じて M2:M5セルの表示形式を変えています。
     
    K2が0でM1:M4の表示形式を変えても、K3が1なら M2:M5の表示形式が変わるので、
    変化させるセルが重なっているので、M2:M4の表示形式がK2=0の時のものではなく、K3=1の時のものに代わります。
    つまり、変化させるセル範囲の指定の仕方がおかしいのではないのですか?
    Range("M" & i & ":M" & i + 3).NumberFormatLocal = "#0"
    の
    "M" & i & ":M" & i + 3
    部分が適当なのか検討の必要があると思います。
    

引用返信/返信 削除キー/
■13148 / inTopicNo.3)  Re[2]: 表示形式がリセットされる
□投稿者/ 通りすがりの太陽 -(2017/04/12(Wed) 08:42:08)
    よね様

    ご返信ありがとうございます。

    上手く伝わらず申し訳ありませんでしたが、
    変数iの値を変更するところの前にリセットされてしまうのです。

    10 i=1

    20 Select Case Range("K" & i + 1).Value
    30  Case 0
    40   Range("M" & i & ":M" & i + 3).NumberFormatLocal = "#0"
    50  Case 1
    60   …
    70 End Select

    とすると、40行目でセットした表示形式が70行目でリセットされてしまう、ということです。
    しかもそのリセットされた表示形式も、特に私が指定した表示形式ですらないのです。

    70行目にどのような処理が行われているのでしょうか?
引用返信/返信 削除キー/
■13149 / inTopicNo.4)  Re[3]: 表示形式がリセットされる
□投稿者/ よねさん -(2017/04/12(Wed) 10:34:35)
    こちらでは K2セルに 0 を入力して、この↓のtest2を動かすと、M1:M4セルの表示形式は
    #0 に設定されました。
    Sub test2()
    Dim i As Long
    i = 1
    Select Case Range("K" & i + 1).Value
    Case 0
    Range("M" & i & ":M" & i + 3).NumberFormatLocal = "#0"
    Case 1

    End Select
    End Sub


    > 40行目でセットした表示形式が70行目でリセットされてしまう、ということです。
    > しかもそのリセットされた表示形式も、特に私が指定した表示形式ですらないのです。
    ということですが、50〜70行目の間で何かしていませんか?

    「特に私が指定した表示形式ですらない」とはどういう表示形式ですか?

    こちらでは、そのようなことが起きませんので、何か再現できそうな情報がありませんか?

    もしかして、「リストオートフィル」の機能が邪魔しているとか・・・
    http://www4.synapse.ne.jp/yone/excel2010/excel2010_listautofill.html
    でも、「特に私が指定した表示形式ですらない」だから違う確率大です。

引用返信/返信 削除キー/
■13150 / inTopicNo.5)  Re[4]: 表示形式がリセットされる
□投稿者/ 通りすがりの太陽 -(2017/04/13(Thu) 09:16:13)
    よね様

    ご返信ありがとうございます。
    助言いただきましたリストオートフィルの機能はオフにしておりましたので該当いたしませんでした。

    その後いろいろ試してみた結果、最終行のEndSelectが悪かったのではなく、
    Case内最終行(下記90行目)で指定したセルが間違っていました。

    誤)Range("R" & i & ":M" & i + 3).NumberFormatLocal = "#,##0"
    正)Range("R" & i & ":R" & i + 3).NumberFormatLocal = "#,##0"

    コピペの修正ミスでしたが、これではM行から変更されてしまいますよね。
    ステップインの見方を勘違いして、EndSelectを疑っていたなんて恥ずかしいです。
    どうもお騒がせいたしました…
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -