我不敢相信我無法弄清楚這一點。看起來太愚蠢了。我有一個包含幾個欄位的用戶表單,當我按下提交按鈕時,它會更新電子表格并每天跟蹤所有內容。問題是,當它嘗試更新作業表時,第一行代碼會執行,然后由于某種原因子程式結束。我感謝您的幫助!這是我的代碼
Private Sub cmdSubmit_Click()
Dim x As Integer
x = 1
Do 'find date
If Trim(Worksheets("Personal").Range("A1").Offset(x).Value) = txtdate.Value Then GoTo Found
x = x 1
Loop Until Worksheets("Personal").Range("A1").Offset(x).Value = ""
MsgBox ("Date not found")
Exit Sub
Found:
Worksheets("Personal").Range("A1").Offset(x, 1).Value = txtweight.Value 'code fail point
Worksheets("Personal").Range("A1").Offset(x, 2).Value = Worksheets("Personal").Range("A1").Offset(x, 2).Value txtpush.Value
If CBWalk.Value = True Then
Worksheets("Personal").Range("A1").Offset(x, 3).Value = "x"
Else
Worksheets("Personal").Range("A1").Offset(x, 3).Value = ""
End If
Unload Me
End Sub
我查看了作業表設定并挑出了每一行代碼,但找不到原因。如果我注釋掉問題所在的行,那么更新電子表格的以下行會導致相同的問題。
uj5u.com熱心網友回復:
我想出的解決方案是將表單中的每個欄位移到一個變數中,然后將它們傳遞給不同模塊中的另一個子項。似乎一旦它與原始表單完全斷開連接,更新就沒有問題了。仍然不明白為什么它首先要這樣做......
uj5u.com熱心網友回復:
無需迭代行,使用Range.Find
Option Explicit
Private Sub cmdSubmit_Click()
Dim lastrow As Long, r As Long, ws As Worksheet
Dim dt As Date, cell As Range
' first validate date
If Not IsDate(TxtDate.Value) Then
MsgBox "'" & TxtDate.Value & "' is not a valid date", vbCritical
Exit Sub
End If
Set ws = Worksheets("Personal")
With ws
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
' search for date
dt = DateValue(TxtDate.Value)
Set cell = .Range("A1:A" & lastrow).Find(dt, LookIn:=xlFormulas, lookat:=xlWhole)
If cell Is Nothing Then
MsgBox Format(dt, "yyyy-mm-dd") & " not found", vbExclamation
Else
cell.Offset(0, 1).Value = txtweight.Value
cell.Offset(0, 2).Value = cell.Offset(0, 2).Value txtpush.Value
cell.Offset(0, 3).Value = IIf(CBwalk.Value, "x", "")
End If
End With
Unload Me
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349806.html
上一篇:在管道中使用擴展替換值
