過去ログ

                                Page     485
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼セルのフォーカス喪失  平 02/12/25(水) 16:09
   ┗Re:セルのフォーカス喪失  Jaka 02/12/25(水) 16:20
      ┗Re:セルのフォーカス喪失  つん 02/12/25(水) 16:33
         ┗Re:セルのフォーカス喪失  Jaka 02/12/25(水) 17:07
            ┗Re:セルのフォーカス喪失  つん 02/12/25(水) 17:18
               ┗Re:セルのフォーカス喪失  bykin 02/12/25(水) 21:34
                  ┗ありがとうございました  平 02/12/26(木) 12:02

 ───────────────────────────────────────
 ■題名 : セルのフォーカス喪失
 ■名前 : 平
 ■日付 : 02/12/25(水) 16:09
 -------------------------------------------------------------------------
   あるセルに何らかの文字列を入力した後に
Enterキーでそのセルのフォーカスを失った時に
イベントを発生させるにはどのようにすればいいのでしょうか?

例えばA1セルに何かを入力した後にEnterキーを押した時
A1セルに入力されたのが数字のみの場合はB1に「数字」
そうでない場合は「文字」と表示させる、という具合なのですが・・・
 ───────────────────────────────────────  ■題名 : Re:セルのフォーカス喪失  ■名前 : Jaka  ■日付 : 02/12/25(水) 16:20  -------------------------------------------------------------------------
   こんにちは。
数字判定が、完璧じゃないところもありますが。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address(0, 0) = "A1" Then
    If IsNumeric(Target.Value) = True Then
     Range("B1").Value = "数字"
    Else
     Range("B1").Value = "文字"
    End If
  End If
End Sub
 ───────────────────────────────────────  ■題名 : Re:セルのフォーカス喪失  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/25(水) 16:33  -------------------------------------------------------------------------
   こんにちは〜
考えていたらJakaさんが・・・
ほとんど同じですが、一応、A列に適用にしてみました。

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Column = 1 Then
    If IsNumeric(Target.Value) = True Then
      Target.Offset(, 1).Value = "数字"
    Else
      Target.Offset(, 1).Value = "文字"
    End If
  End If

End Sub

>数字判定が、完璧じゃないところもありますが。

IsNumeric(Target.Value)
これじゃ完璧じゃないのか・・・どういう場合に不具合があるんやろ?
 ───────────────────────────────────────  ■題名 : Re:セルのフォーカス喪失  ■名前 : Jaka  ■日付 : 02/12/25(水) 17:07  -------------------------------------------------------------------------
   >IsNumeric(Target.Value)
>これじゃ完璧じゃないのか・・・どういう場合に不具合があるんやろ?

V3の記事が無くなってました。
よろずやさんの忠告です。
忘れちゃったんですか?
お試しください。

例えば
MsgBox IsNumeric("0e0")
 ───────────────────────────────────────  ■題名 : Re:セルのフォーカス喪失  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/25(水) 17:18  -------------------------------------------------------------------------
   どもども・・・
Jakaさんありがとうございます。

>よろずやさんの忠告です。
>忘れちゃったんですか?

Jakaさんって恐るべき記憶力の人ですね(@_@)
V3の記事で、よろずやさんのレスってことまで覚えてるなんて!!

>MsgBox IsNumeric("0e0")
なるほど・・・
また、セルの書式を文字列にしてて、全角で数字をいれても、Trueになってしまいました。うーーーん(>_<)
 ───────────────────────────────────────  ■題名 : Re:セルのフォーカス喪失  ■名前 : bykin  ■日付 : 02/12/25(水) 21:34  -------------------------------------------------------------------------
   こんばんわ。

>A1セルに入力されたのが数字のみの場合はB1に「数字」
ってのが、文字列として数字を入力した場合はどうなるのかがちょっと不明でっけど、
ワークシート関数のISNUMBERを使うってのではどーでっしゃろか?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  If Target.Column = 1 Then
    If Application.WorksheetFunction.IsNumber(Target.Value) Then
      Target.Offset(0, 1).Value = "数字"
    Else
      Target.Offset(0, 1).Value = "文字"
    End If
  End If
End Sub

但し複数セルの値を一度に変えたらエラーになるので最初にチェックしてます。
試してみてな。
ほな。
 ───────────────────────────────────────  ■題名 : ありがとうございました  ■名前 : 平  ■日付 : 02/12/26(木) 12:02  -------------------------------------------------------------------------
   Jakaさん、つんさん、bykinさん、ありがとうございました。

ちなみに文字列扱いの数字はありません
(数字のみで構成してる場合は)ので
特に問題はありませんでした。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 485