簡體   English   中英

具有基於日期的可變行輸入的Excel宏

[英]Excel macro with variable row input based on date

我正在嘗試建立一個macro ,為了進行辯論,它的工作方式如下:
監視特定鳥類的日常目擊情況。 Column 'A'代表日期, column 'B'代表向上,而代表不同的鳥類。
我在每一欄中都有一個按鈕,每個按鈕都有鍵盤快捷鍵。
我想要的是按鈕,當單擊以將1添加到當天相應行中的單元格時。
因此,在1月20日,該按鈕將添加到一個單元格中,而在21日,該按鈕將添加到下面的單元格中...

我正在尋找有關此方面的線索,但正在空白。 有任何想法嗎?

我已經編寫了一些代碼,該代碼假定A列的日期格式為“ m / d / yyyy”,第1行列出了您要通過工作表跟蹤的不同鳥類,並且對同片與鳥的名稱格式按鈕,匹配你在第1行具有完全相同 (例如,C1您有“ Brown Wren”,那么您有一個帶有“ Brown Wren”作為文本的表單按鈕)

Option Explicit
Public ws As Worksheet

Private Sub AddBirdSighting(ByVal rng As Range)

    If rng Is Nothing Then
        Debug.Print "Invalid range"
        Exit Sub
    End If

    rng.Value = rng.Value + 1

End Sub

Private Function GetRange(ByVal Bird As String, ByVal Today As Date) As Range

    Dim c As Integer
    Dim r As Integer

    c = ws.Range("1:1").Find(Bird, LookIn:=xlValues).Column
    r = ws.Range("A:A").Find(Today, LookIn:=xlValues).Row

    Set GetRange = ws.Cells(r, c)

End Function

Public Sub CommandButtonClick()

    Set ws = ThisWorkbook.Sheets("Sheet1")

    Dim ctl As String
    Dim btn As String

    ctl = Application.Caller
    btn = ws.Buttons(ctl).Text

    AddBirdSighting GetRange(btn, Format(DateTime.Now, "m/d/yyyy"))

End Sub

將此代碼復制/粘貼到VBA中的模塊中,然后將CommandButtonClick過程分配給所有按鈕。 如果您需要任何解釋,請告訴我,我將進一步詳細介紹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM