我知道已经提出了很多问题,但我发现这个错误有一个奇怪的例子。在我的代码中,我让用户选择一组列,然后我使用该选择来构建一个字符串(称为“bld”)来设置范围。当用户选择说出列A:F
或AA:AF
时,一切都按预期工作,但是当选择U:AC
时会弹出此错误。如果我直接写它代码运行正常,我已经检查'bld'实际上是$U4:$AC75
,但它仍然无法正常工作。有关为什么会发生这种情况的任何想法?设置rng2 = ws2.Range(bld)
是发生错误的位置。
Sub reformat()
Dim wb As Workbook, ws As Worksheet, ws2 As Worksheet
Dim rng As Range, rng2 As Range, rng3 As Range, bld As String
Dim Ar As String, a As Range, b As Range, hrs As Double, man As String
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet")
Set ws2 = wb.Sheets("by_hours")
Set rng = ws.Range("H2:H" & ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row)
Set rng2 = Application.InputBox("Select Week range", , , , , , , 8)
bld = Left(rng2.Address, InStr(rng2.Address, ":") - 1) & "4" & _
Right(rng2.Address, InStr(rng2.Address, ":")) & "75"
Set rng2 = ws2.Range(bld)
答案 0 :(得分:1)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
的代码,当输入范围为双字母列时,会返回缺少bid
的字符串。此外,如果用户选择一系列单元格而不是整列,则会返回意外结果。
要修复,根本不要使用字符串操作,而是操纵所选范围
: