VBA 新手...
我在這段代碼上花了幾個小時,但我什至不確定它是否正在運行或有錯誤,或者變數是否正確。按照在線步驟檢查我的變數是什么,例如在即時視窗中鍵入 ?variable,檢查本地視窗,并將滑鼠懸停在變數上,但什么也沒有出現。無論我何時回傳作業簿,什么都不會發生。如果我至少知道如何找出問題所在,我相信我可以讓它作業。這是一個螢屏截圖:
1
包括一個螢屏截圖,因為我知道問題可能不僅在于代碼本身,還在于我使用 VBA 的無能......這是寫出的代碼:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.address = "C5:I5" Then
Dim row As Integer
row = Application.WorksheetFunction.Match(ActiveCell.Offset(0, -1).Value, Range("$n$1:$n$365"), 0)
Dim address As Long
address = Application.WorksheetFunction.address(row, 15)
Range(address).Value = Range(address).Value 1
ActiveCell.Value = Range(address).Value
End If
End Sub
它的目的只是在單擊時將活動單元格的值加 1。單元格的值將根據其正上方單元格中的日期而變化;該值需要與日期相關聯。我計劃使用位于 n1:o365 的隱藏的升序日期和值陣列來完成此操作。
uj5u.com熱心網友回復:
(a)可能您的意圖是檢查目標單元格是否在“C5:I5”范圍內 - 如果目標具有地址“C5:I5”,那么您的檢查是什么,所以 if 失敗。例如使用該Intersect功能
(b) (次要的) 宣告row為長
(c)沒有.WorksheetFunction.address功能。Range 具有 Address 屬性,例如Target.Address。請注意,這將回傳一個字串,而不是一個 Long。但無論如何你都不需要這個。Cells如果您知道單元格的行和列,請使用。
請注意,我沒有檢查您的邏輯以找到正確的行。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("C5:I5")) Is Nothing Then Exit Sub
Dim row As Long
On Error Resume Next
row = Application.WorksheetFunction.Match(Target.Offset(0, -1).Value, Range("$n$1:$n$365"), 0)
On Error GoTo 0
If row = 0 Then Exit Sub ' Row not found
Dim cell As Range
Set cell = Cells(row, 15)
cell.Value = cell.Value 1
Target.Value = cell.Value
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439848.html
