[英]excel vba cell value step loop
多個單元格引用單元格R1間接查找其他四張紙之一。 這些工作表分別命名為week1,week2,week3和week4。 我要做的是,當我單擊按鈕X時,我的參考單元從第1周更改為第2周。 每次我點擊它時,前進的程度都應使第4周回到第1周。
我當前的損壞代碼為:
'Change the week number in cell R1
week = Range("R1")
If week = week1 Then
Range("R1").Value = week2
Else
If week = week2 Then
Range("R1").Value = week3
Else
If week = week3 Then
Range("R1").Value = week4
Else
If week = week4 Then
Range("R1").Value = week1
End If
End If
End If
End If
Application.ScreenUpdating = True 'Turns viewing function back on so the spreadsheet is usable.
End Sub
Select Case week
Case Is = week1: vValue = week2
Case Is = week2: vValue = week3
Case Is = week3: vValue = week4
Case Is = week4: vValue = week1
End Select
Range("R1").Value = vValue
Application.ScreenUpdating = True
您應該能夠在單個代碼行中執行此操作。
Range("R1") = Format(InStr(1, "4123", Right(Range("R1").Value, 1)), "\W\e\ek0")
這將在Week1,Week2,Week3,Week4,Week1,...之間循環。 我已經省略了R1的父工作表引用,但包括它永遠不是一個壞主意。
有一個簡單的解決方法:
Range("R1") = Left(Range("R1"), 4) & Right(Range("R1"), 1) Mod 4 + 1
'number after Mod = max week
Mod x
僅在其最大計數時將其設置為0( + 1
則將其再次設置為1)。但是,您可以使用此子項來避免出現奇怪的行為:
Sub NewWeekMax()
Dim str As String, i As Byte
str = "Week1"
For i = 2 To 4 'last num = max weeks
str = str & ",week" & i
Next
With Range("R4").Validation
.Delete
.Add 3, 1, 1, str
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
此子項只是設置數據驗證以禁用R1
錯誤輸入
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.