Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : 指定なし)
if文にDay関数を入れると機能しない
投稿日時: 21/02/12 12:34:18
投稿者: S.Kos

みなさま、こんにちは, あれれ? なことが起きています。
環境は、
・winsow10Pro
・バージョン 2004
・インスト日 21/02/10
・OSビルド  19041.746
・EXCEL 365 MSO(16.0.13628.20128)32ビット
です。
 
Cell(yPos, xPos).value = "2021/02/23"
tgDay = 12
として日付のみを比較しようとしています。
このとき、
if tgDay < Day(Cell(yPos, xPos).value) then <-※
が機能しません
 
ダミー変数を用意して
dum = Day(Cell(yPos, xPos).value)
if tgDay < dum then
とすると、問題なく機能します。
 
つい先日(はっりしません・・)まで、上記※で動いていました。
なにが起きているのでしょうか?

回答
投稿日時: 21/02/12 16:03:34
投稿者: WinArrow
投稿者のウェブサイトに移動

>tgDay
この変数は、どこでどのように定義しているのでしょうか?

回答
投稿日時: 21/02/12 16:07:11
投稿者: WinArrow
投稿者のウェブサイトに移動

回答ではありませんが、
掲示板に掲載するコードは、手入力ではなく、コードペインからコピペしましょう。
手入力で、誤入力があった場合、間違っているコードとにらめっこしてもはじまらないから・・・

回答
投稿日時: 21/02/16 11:54:22
投稿者: ip8bk

下記のコードを追加して、ifがtrueになるときの結果を確認してみてください。
 

msgbox tgDay
msgbox Day(Cell(yPos, xPos).value)

回答
投稿日時: 21/02/17 09:44:30
投稿者: simple

質問者さんは、一般機能にUpdateがらみの質問を掲載されているので、
もしかするとそれが原因かもしれません。
 
普通はあり得ないことなので、コードの間違いという話ではないと思います。
もしそうした推測があたっていれば、Updateで修復されるのを待つしか
一般ユーザーには道はないと思いますので、
追加で回答を寄せられてもたぶん、益が乏しいと思います。
 
# ちなみに、Cellsというプロパティはあっても、Cellとかいうものはありません。

投稿日時: 21/02/23 15:38:50
投稿者: S.Kos

みなさま、ご教示のほど感謝です。
とんでもなく亀レスになってしまったこと、ご容赦ください。
 
WinArrowさん
>掲示板に掲載するコードは、手入力ではなく、コードペインからコピペしましょう。
>
simpleさん
># ちなみに、Cellsというプロパティはあっても、Cellとかいうものはありません。
>
お恥ずかしい限りです・・テストコードを書いて尋ねるべきでした。
 
亀レスになったことが幸い(?)したのか、
 
Private Sub CommandButton1_Click()
  Dim xPos As Long, yPos As Long, tgDay As Long
   
  yPos = 5: xPos = 3
  Cells(yPos, xPos).Value = "2021/02/23"
 
  tgDay = 12
  If tgDay < Day(Cells(yPos, xPos).Value) Then
    MsgBox " OK "
  Else
    MsgBox " NO "
  End If
End Sub
 
と書いたら、なんと、問題なく動きました!
 
あれれ? なことが起きていたコードに立ち帰って試すと、こちらも問題ありません。
 
一般機能の部屋でMikeさんからのご教示、
>諺曰く「待てば海路の日和あり」(*^_^*)
>WindowsUpdateを怠り無く續けて居る内にネ
>
がアタリ(苦笑)だったのかも、です。
 
お騒がせしました。ここで閉じます。