[[20060604161115]] 『表示形式の違い?』(岸) ページの最後に飛ぶ

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

 

『表示形式の違い?』(岸)

 J1に=TEXT(A1,"d")で値は4
A1に2006/6/4
のとき=IF($J$1<=15,B3,B4)
の答えが、B4の値を出すんですがどうしてでしょうか?
表示形式の問題でしょうか?色々いじくっても直らないので困り果てています。
ご存知の方いたらお教えください


 ◆J1は文字列です
 =IF(--$J$1<=15,B3,B4)
 (Maron)

 >答えが、B4の値を出すんですがどうしてでしょうか?
 =TEXT(A1,"d")でJ1セルの値は、文字列の「4」が返される。
 よって、=IF($J$1<=15,B3,B4) で数値の15より文字列は大きいのでB4の値が表示される。
 参考資料:[XL2000]比較演算子による比較結果について
http://support.microsoft.com/kb/416983/JA/

 J1セルの数式を=DAY(A1)としても良いでしょう。(Hatch)


 なるほど・・・
エクセルって奥が深いですね勉強になりました
ありがとうございます。


 岸です。別件で問題発生しました。
I1=IF(H1=4,B2,IF(H1=5,C2,IF(H1=6,D2,IF(H1=7,E2,IF(H1=8,F2,IF(H1=9,G2,""))))))
VBで
Label2.Caption = Sheets("あい").Range("I1").Value
とやったらI1にはイフ文が入っていたのにもかかわらず、数値に変化してしまいます。
ラベルのキャプションを変えたいだけなのに
数式が変化するなんて許せないです。
どう対処すればいいでしょうか?上式で間違いあれば指摘願います。


 数式は(思ったように計算されているのなら)悪くないでしょう。
 
>数式が変化するなんて許せないです。
 
お気持ちは察しますが、マクロはコードにかかれたことしかやらないので、
主たる原因は[岸]さんの書いたコードであると推測します。
 
セルI1へ値を代入したり、貼り付けたりするコードがないか探してみてください。
Sheets("あい").Range("I1").Value = ナントカ.Value 
とか
PasteSpecialで xlPasteValuesでの貼り付けとか。
(みやほりん)(-_∂)b


 >主たる原因は[岸]さんの書いたコードであると推測します。
ですよね・・・
この際全部式出します。これですべてです。
 
Option Explicit
Private Sub CommandButton3_Click()
  CommandButton3.Visible = False
  CommandButton2.Visible = True
End Sub
Private Sub UserForm_Initialize()
   Label1.Caption = Sheets("あい").Range("A1").Value
   If Sheets("あい").Range("H1").Value <= 9 Then
      Label2.Caption = Sheets("あい").Range("I1").Value
      If Sheets("あい").Range("I1").Value > 0 Then
         CommandButton1.Visible = False
      Else: Sheets("あい").Range("I1").Value = 0
         CommandButton2.Visible = False
         CommandButton3.Visible = False
      End If
   Else
      Label2.Caption = Sheets("あい").Range("K1").Value
      If Sheets("あい").Range("K1").Value > 0 Then
         CommandButton1.Visible = False
      Else: Sheets("あい").Range("K1").Value = 0
         CommandButton2.Visible = False
         CommandButton3.Visible = False
      End If
   End If
End Sub
どこかおかしいところあるでしょうか?
どうやらシート上のカレンダーコントロールをクリックすると
数式が値に置き換えられるようです・・・
どうしてでしょうか?


 [岸]さん、お尋ねしますが、
      Else: Sheets("あい").Range("I1").Value = 0
この部分はご自身でどのように解釈しておられますか?
 
また・・・。
>どうやらシート上のカレンダーコントロールをクリックすると
>数式が値に置き換えられるようです・・・
>どうしてでしょうか?
 
あのー、現状では、[岸]さん自身がそういう設定をしているのでしょう、
としかお答えしようがないんですけれども・・・。
これもお尋ねしますが、そのカレンダーコントロールは今までご提示された数式や
マクロと何か関係があるのでしょうか?
(みやほりん)(-_∂)b

 Else: Sheets("あい").Range("I1").Value = 0
 >この部分はご自身でどのように解釈しておられますか?
Sheets("あい").Range("I1").Valueの値が0だったらって事じゃないんですか?

 >そのカレンダーコントロールは今までご提示された数式やマクロと何か関係があるのでしょうか?
もちろん関係ありです。
カレンダーコントロールの日付ごとに予定を登録しようとしています。
別シートSheets("1")〜Sheets("12")←月別の予定格納してあります。
I1でデータが何件あるかを判断するための数式を入れました。

 横から失礼!

 Else: Sheets("あい").Range("I1").Value = 0
 というのは

 Else
     Sheets("あい").Range("I1").Value = 0

 のことであり、条件節ではありません。 ElseIf と勘違いしてませんか?

 (seiya)

 どーも岸です。
 > ↑ 「俺は切れたぞ!」という印象を持ってしまいましたが、違いますよね?
そんな滅相もない。そんな印象もたれてしまったなら申し訳ないです。
Else と ElseIf と Else:
って表記の仕方の違いだけで同じかと思ってました。
詳しく知りたいです。

 : をコードの中で使用する場合は、そこで改行したとお考えください。

 Else と ElseIf は意味が違います。

 Else は 前述された条件(郡)に適合しない場合の処理。

 ElseIf は前述された条件以外の条件節です。

 例:
 If Range("a1").Value = 1 Then
    Range("b1").Value = "OK"
 Else
    Range("b1").Value = "NO"
 End If

 If Range("a1").Value = 1 And Range("a2").Value = 2 Then
    Range("b1").Value = "OK"
 ElseIf Range("a1").Value = 2 And Range("a2").Value = 3 Then
    Range("b1").Value = "So So"
 Else
    Range("b1").Value = "No"
 End If

 (seiya)
 


 >>どうやらシート上のカレンダーコントロールをクリックすると
 >>数式が値に置き換えられるようです・・・
 >どうしてでしょうか?
 に関して 
 >あのー、現状では、[岸]さん自身がそういう設定をしているのでしょう、
 >としかお答えしようがないんですけれども・・・。
 
とあるのですが、
どこがどういけないのかお教えいただけないでしょうか?
自分の意識の中で上記式は、
 
Option Explicit
Private Sub CommandButton3_Click()
  CommandButton3.Visible = False
  CommandButton2.Visible = True
End Sub
Private Sub UserForm_Initialize()
   Label1.Caption = Sheets("あい").Range("A1").Value
  'A1の値をラベル1のキャプションに反映
   If Sheets("あい").Range("H1").Value <= 9 Then
  'もしH1の値が9以下なら・・・
      Label2.Caption = Sheets("あい").Range("I1").Value
   'I1の値をラベル2に反映
      If Sheets("あい").Range("I1").Value > 0 Then
   'もしI1が0より大きいなら・・・
         CommandButton1.Visible = False
      Else: Sheets("あい").Range("I1").Value = 0
   'もしI1が0より大きくないなら・・・
         CommandButton2.Visible = False
         CommandButton3.Visible = False
      End If
   Else  'H1の値が9以下じゃない場合・・・
      Label2.Caption = Sheets("あい").Range("K1").Value
   'K1の値をラベル2に反映
      If Sheets("あい").Range("K1").Value > 0 Then
         CommandButton1.Visible = False
      Else: Sheets("あい").Range("K1").Value = 0
         CommandButton2.Visible = False
         CommandButton3.Visible = False
      End If
   End If
End Sub
 
全快示したように
I1=IF(H1=4,B2,IF(H1=5,C2,IF(H1=6,D2,IF(H1=7,E2,IF(H1=8,F2,IF(H1=9,G2,""))))))
になっていてそこの値をLabel2.Captionに反映させるんですが、
実際反映されるんですが、その時点でI1が数式でなく値に変化してしまうのです。
いわば、I1をコピーして値として貼り付けしたみたいな状態になってしまうのです。
どう修正すればよいでしょうか?


 まず、全てをお聞きする前に、seiyaさんが作って下さった例を試してみるのはいかがでしょう?
 また、ヘルプを見て頂くだけでも解決できそうですね^^

 (キリキ)(〃⌒o⌒)b

 すっかりほったらかしで申し訳ない。
seiyaさん、キリキさん、ありがとう。
seiyaさんがご指摘のとおり、Elseの意味を完全に取り違えていらっしゃいます。
      If Sheets("あい").Range("I1").Value > 0 Then
         (略1)
      Else: Sheets("あい").Range("I1").Value = 0
         (略2)
      End If
「シート"あい"のI1が0より大きければ(略1)を実行、
そうでなければ、シート"あい"のI1を 0にし、(略2)を実行」
つまり、シート"あい"のI1が0以下であれば、
必ず、式はクリアされ0がセルに代入されます。
 
>Sheets("あい").Range("I1").Valueの値が0だったら
ならば、
      ElseIf Sheets("あい").Range("I1").Value = 0 Then
でなければなりません。これはおそらく、K1についても同様でしょう。
 
>そこの値をLabel2.Captionに反映させるんですが、
>実際反映されるんですが、その時点でI1が数式でなく値に変化してしまうのです。
 
提示されているコードでは上記に指摘している以外にはそのような動作は
確認できません。また、
 
>どうやらシート上のカレンダーコントロールをクリックすると
>数式が値に置き換えられるようです・・・
 
これも、ご提示いただいているコードでは関連性がみあたりません。
もし実際にそのような現象が起こるのでしたら、
カレンダーコントロールのリンク先をI1に設定している、
カレンダーコントロールのイベントでI1へ値を代入する、などの設定を
されている可能性が大。カレンダーコントロールのプロパティやシートモジュールの
コードを確認してみることです。
 
VBAコードのことを「式」と表現されるのも違和感があります。
ところで、カレンダーコントロールって、シートに配置できるものなんかいな。
Accessインストールしてないとだめでしたっけ。検証が出来ん。
(みやほりん)(-_∂)b

 岸です。ご丁寧にありがとうございます。
今まで知りませんでした。勉強になりました。
もう一度全体見直してから報告します。
よろしくお願いいたします。


 ここだけに反応。
>カレンダーコントロールって、シートに配置できるものなんかいな。

 下のリンク先で、Hatchさんがシート上に配置されています。
 ただ、やはりアクセスの入っていないPCでは何も出来ないみたいです。
 
[[20041030004258]]『カレンダーで実績表を作るには?』(ヤマモ)

 (川野鮎太郎)

 岸です。
修正したらばっちりでした。
今回はすごい基本的なことで申し訳なかったです。
すごく勉強になりました。ありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


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