Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11032 / 13646 ツリー ←次へ | 前へ→

【18537】数式が入力されているか見分ける方法 カド 04/9/29(水) 8:43 質問[未読]
【18540】Re:数式が入力されているか見分ける方法 Asaki 04/9/29(水) 9:12 回答[未読]
【18556】Re:数式が入力されているか見分ける方法 カド 04/9/29(水) 15:38 お礼[未読]
【18543】Re:数式が入力されているか見分ける方法 Kein 04/9/29(水) 10:07 回答[未読]
【18558】Re:数式が入力されているか見分ける方法 カド 04/9/29(水) 15:43 お礼[未読]
【18559】Re:数式が入力されているか見分ける方法 Kein 04/9/29(水) 16:02 回答[未読]
【18560】Re:数式が入力されているか見分ける方法 Kein 04/9/29(水) 16:06 回答[未読]
【18562】さらに問題が発生しました カド 04/9/29(水) 18:04 質問[未読]
【18564】Re:さらに問題が発生しました Kein 04/9/29(水) 20:54 回答[未読]
【18574】Re:さらに問題が発生しました カド 04/9/29(水) 23:24 質問[未読]
【18578】Re:さらに問題が発生しました カド 04/9/30(木) 7:00 お礼[未読]

【18537】数式が入力されているか見分ける方法
質問  カド  - 04/9/29(水) 8:43 -

引用なし
パスワード
   おはようございます。
ちょっと困っているので教えてください。

たとえば、セルC5からX85まで数式が入っています。
この数式で計算できない例外があると、直接手で数字を入力しています。

今、数式が入っていないセルだけに色を付けて区別したいのですが、
どうすればよいか教えてください。

補足)
私がやるとセル一つ一つを調査する方法になるのですが、良くご存知の人は
全体の範囲に対し、一括して処理するのではないかと思っています。

あと、セルが数式か数字かを見分ける方法もわかりません。

【18540】Re:数式が入力されているか見分ける方法
回答  Asaki  - 04/9/29(水) 9:12 -

引用なし
パスワード
   こんにちは。

C5からX85を選択して
メニューから、編集 >> ジャンプ >> 「セル選択」押下 で表示されるダイアログで
「定数」
をクリックして「OK」ボタンを押すと、定数のセルのみが選択状態になります。
この処理をマクロの記録で記録してみて、利用しては如何でしょうか?

【18543】Re:数式が入力されているか見分ける方法
回答  Kein  - 04/9/29(水) 10:07 -

引用なし
パスワード
   セルを一つずつチェックしていくなら・・

Dim C As Range

For Each C In Range("C5:X85")
  If Not C.HasFormula Then
   C.Interior.ColorIndex = 3
  End If
Next

【18556】Re:数式が入力されているか見分ける方法
お礼  カド  - 04/9/29(水) 15:38 -

引用なし
パスワード
   ▼Asaki さん:
回答ありがとうございます。

ジャンプという機能があって、今回のような場合に使うことが出来るのですね。
勉強になりました。

【18558】Re:数式が入力されているか見分ける方法
お礼  カド  - 04/9/29(水) 15:43 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。

期待していた通りの回答でした。
この辺りの使い方がいまいち判ってなくて勉強になります。

あと、定数以外には式が入っているのですが、全部の式に対して
/1000(割る1000)を追加したいのですが、このようなことは
出来るのでしょうか?

例)

=○*△

=○*△/1000

【18559】Re:数式が入力されているか見分ける方法
回答  Kein  - 04/9/29(水) 16:02 -

引用なし
パスワード
   ただ数式というだけでは、どんな計算をしているのか分かりませんから、単純に
"/1000"をくっつけてうまくいくかどうか・・。
いちおう先のコードを利用して

Dim C As Range

For Each C In Range("C5:X85")
  If C.HasFormula Then
   C.Formula = C.Formula & "/1000"
  End If
Next

というのは思いつきますけど・・。

【18560】Re:数式が入力されているか見分ける方法
回答  Kein  - 04/9/29(水) 16:06 -

引用なし
パスワード
   ま、範囲内に数式を入力したセルが確実にある、という前提なら

Dim C As Range

For Each C In Range("C5:X85").SpeialCells(3, 1)
  C.Formula = C.Formula & "/1000"
Next

の方が、効率は良くなりますね。
計算結果が数値である、という条件も入れてです。

【18562】さらに問題が発生しました
質問  カド  - 04/9/29(水) 18:04 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。

/1000を追加することはうまくいきました。
再度、ありがとうございます。

実はここで一つ問題がありまして、もし、このようなことも可能であれば
教えてください。

実は、定数だと思っていたセルにも式が入っていました。
それは、たとえば”=5000*1000”といった数字のみで構成されています。
この式と”=A5*1000”のようにセルを参照した式が入っているセルを
色付けで区別したいのですが、このようなことは出来るのでしょうか?

【18564】Re:さらに問題が発生しました
回答  Kein  - 04/9/29(水) 20:54 -

引用なし
パスワード
   Sub Fomula_Check()
  Dim MyR As Range, C As Range, CkR As Range
 
  On Error GoTo ErLine
  Range("C5:X85").SpecialCells(3)
  On Error GoTo 0
  On Error Resume Next
  For Each C In MyR
   Set CkR = C.DirectPrecedents
   If Err.Number > 0 Then
     C.Interior.ColorIndex = 5
     Err.Clear
   Else
     C.Interior.ColorIndex = 3
   End If
   Set CkR = Nothing
  Next
  Set MyR = Nothing: Exit Sub
ErLine:
  MsgBox "C5:X85の範囲内に数式のあるセルが見つかりません", 48
End Sub

で、どうかな ?
セル参照を含む数式があれば赤で塗りつぶし、含まなければ青で塗りつぶします。

【18574】Re:さらに問題が発生しました
質問  カド  - 04/9/29(水) 23:24 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。

やってみましたが、何も起こりませんでした。

【18578】Re:さらに問題が発生しました
お礼  カド  - 04/9/30(木) 7:00 -

引用なし
パスワード
   Set MyR = Range("C5:X85").SpecialCells(3)を追加して、
うまくいきました。

いつも、”本当にこんなこと出来るのか?”と思って聞いていますが、
何でも出来るように機能が備わっていてほんとに凄いです。

11032 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free