Excel VBA質問箱 IV

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

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


8344 / 76732 ←次へ | 前へ→

【73963】Re:セルを比べて一致すれば指定のセルを表示
発言  UO3  - 13/3/25(月) 14:26 -

引用なし
パスワード
   ▼nonoka さん:

こんにちは

そういうことでしたら

・まずブックを開いたときに処理する。
(一度処理すれば、その日のうちは2度目に開いたときの処理は不要ですが、まぁ、そこは横着に)
・で、万が一、K3の値をマニュアルで入力する場合があったときも考え、K3 と K10以降のK列の値が
 変更になれば処理。

ちょっと難点がなきにしもあらず。
夜中に作業をしていて、日付がかわったあと、シートに何かの変化があれば、K3の値がかわりますが
その時には、イベントをキャッチできませんので、処理は行われません。

ThisWorkbookモジュールに。(対象のシート名は、とりあえず"Sheet1"としていますが
実際のものに直してください。

(★コードを書いただけで動かして確認してません。不備あれば指摘願います)

Option Explicit

Const shName As String = "Sheet1"    '実際のものに

Private Sub Workbook_Open()
  Call Sample(Columns("K"))
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim r As Range
  If Not Sh Is Sheets(shName) Then Exit Sub
  Set r = Intersect(Target, Sh.Columns("K"))
  If r Is Nothing Then Exit Sub
  Call Sample(r)
End Sub

Sub Sample(Target As Range)
  Dim c As Range
  Dim a As Variant
  Dim r As Range
  Dim bDt As Double
  
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  
  With Sheets(shName)
   bDt = .Range("K3").Value2
  
   For Each c In Target.Cells
    If c.Row = 3 Or c.Row >= 10 Then
      With c.EntireRow
        .Range("L1").ClearContents
        If IsDate(c.Value) Then
          Set r = .Range("N1:AA1")
          a = Application.Match(bDt, r, 0)
          If IsNumeric(a) Then
            .Range("L1").Value = Target.Parent.Cells(9, a + 13).Value
          Else
            a = Application.Match(.Range("K1").Value2, r, 0)
            If IsNumeric(a) Then
              .Range("L1").Value = Target.Parent.Cells(9, a + 13).Value
            Else
              If .Range("K1").Value2 < bDt Then
                .Range("L1").Value = "未投入"
              Else
                If .Range("M1").Value2 < bDt Then .Range("L1").Value = "完了"
              End If
            End If
          End If
        End If
      End With
    End If
   Next
  End With
  
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  
End Sub
259 hits

【73929】セルを比べて一致すれば指定のセルを表示 nonoka 13/3/22(金) 17:46 質問
【73933】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/22(金) 21:47 発言
【73936】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/22(金) 22:10 回答
【73938】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/22(金) 22:24 発言
【73939】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/22(金) 22:39 回答
【73940】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/22(金) 23:01 発言
【73941】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/22(金) 23:07 発言
【73942】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/22(金) 23:09 回答
【73945】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/23(土) 6:47 発言
【73947】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/23(土) 7:58 発言
【73960】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/25(月) 10:52 回答
【73961】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/25(月) 12:13 発言
【73962】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/25(月) 13:43 回答
【73963】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/25(月) 14:26 発言
【73964】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/25(月) 15:25 回答
【73965】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/25(月) 15:48 発言
【73966】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/25(月) 16:02 発言
【73967】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/25(月) 18:25 回答
【73968】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/26(火) 10:46 発言
【73969】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/26(火) 11:05 発言
【73970】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/26(火) 15:40 発言
【73971】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/26(火) 16:29 回答
【73972】Re:セルを比べて一致すれば指定のセルを表示 UO3 13/3/26(火) 17:16 発言
【73973】Re:セルを比べて一致すれば指定のセルを表示 nonoka 13/3/26(火) 17:35 お礼

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