作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行我的代码:
Sub Test()
Dim vuosi As Integer
Dim kk As Integer
Dim cF As Range
Dim c As String
Dim cell As Range
vuosi = Application.InputBox(Prompt:="Syötä vuosi, jota haluat tarkastella.")
kk = Application.InputBox(Prompt:="Syötä kuukausi(1-12), jota haluat tarkastella.")
If vuosi = 2014 Then
c = "BU"
ElseIf vuosi = 2015 Then
c = "CG"
ElseIf vuosi = 2016 Then
c = "CS"
End If
ActiveSheet.Range("F11:F60").Select
For Each cell In Selection
Cells(ActiveCell.Row, c).Activate
Set cF = Range(ActiveCell.Offset(0, kk - 12), ActiveCell.Offset(0, kk)).Find(What:=1, LookIn:=xlFormulas, LookAT:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False)
If Not cF Is Nothing Then
Cells(ActiveCell.Row, "F").Interior.ColorIndex = 6
End If
Next cell
End Sub
最佳答案
我对您的代码有一些看法。让我试着涵盖我注意到的所有内容。
一个 ) 使用 Excel 行时,避免将它们声明为 Integers
.在 Excel 2007 之后,行数增加到 1048576,对于 Integer
来说,这个数字太大了。 .使用列时您可以逃脱,但可能会遇到行问题。将它们声明为 Long
是一个好习惯
乙 ) 您假设用户将始终在输入框中输入值。如果用户输入一个空白或按取消怎么办?捕获这些实例。如果您只想在输入框中输入数字,请使用 Type:=1
用它。更多详情请阅读 Application.InputBox Method
在 Excel 帮助中。
中号 ) 避免使用 .Select/.Activate
您的代码无需选择任何内容即可轻松运行。您可能想查看 THIS
这是你正在尝试的吗? ( 未经测试 )
Sub Test()
Dim vuosi As Integer, kk As Long
Dim rng As Range, aCell As Range, rngToFind As Range, cF As Range
Dim c As String
Dim ws As Worksheet
vuosi = Application.InputBox(Prompt:="Syötä vuosi, jota haluat tarkastella.", Type:=1)
If vuosi < 1 Then Exit Sub
kk = Application.InputBox(Prompt:="Syötä kuukausi(1-12), jota haluat tarkastella.", Type:=1)
If kk < 1 Then Exit Sub
If vuosi = 2014 Then c = "BU"
If vuosi = 2015 Then c = "CG"
If vuosi = 2016 Then c = "CS"
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
Set rng = ws.Range("F11:F60")
For Each aCell In rng
Set rngToFind = .Range(aCell.Offset(0, kk - 12), aCell.Offset(0, kk))
Set cF = rngToFind.Find(What:=1, LookIn:=xlFormulas, LookAT:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, _
SearchFormat:=False)
If Not cF Is Nothing Then .Range("F" & aCell.Row).Interior.ColorIndex = 6
Next cell
End With
End Sub
关于VBA excel : For Each. .Next 没有经过选定的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30208257/
我是一名优秀的程序员,十分优秀!