有人可以告诉我如何将列引用的大小调整为工作表中的第一行吗?
我得到的错误(两者都有不同的原因),这是可以理解的,但仍然令人沮丧:
尝试1:
Dim Columns_To_Export as String
Columns_To_Export ="$B:$C,$E:$E"
Range(Columns_To_Export).Resize(1).Select
尝试2:
Dim Columns_To_Export as String
Columns_To_Export ="$B:$C,$E:$E"
Colulumns(Columns_To_Export).Resize(1).Select
答案 0 :(得分:0)
基本上,Column
是范围,而不是字符串。这段代码可以完成这项工作。
Dim Rng As Range
With ActiveSheet
Set Rng = Application.Union(.Columns("B"), .Columns("C"), .Columns("E"))
End With
Rng.Select
答案 1 :(得分:0)
我担心我对上述反应并不十分专注。以下是我认为更好的尝试。
Private Sub SelectCells()
On Error Resume Next
Debug.Print CellsForExport("$B:$C, $E:$E, G").Address
End Sub
Function CellsForExport(ByVal Desc As String) As Range
' 15 Apr 2017
Dim Fun As Range, Rng As Range
Dim Spi() As String, Spj() As String
Dim i As Integer, j As Integer
Dim Cstart As Long, Cend As Long
Desc = Replace(Desc, "$", "")
Spi = Split(Desc, ",")
For i = 0 To UBound(Spi)
Spj = Split(Trim(Spi(i)), ":")
Cstart = Columns(Trim(Spj(0))).Column
Cend = Cstart
If UBound(Spj) Then Cend = Columns(Trim(Spj(1))).Column
With ActiveSheet.Rows(1)
Set Rng = .Range(.Cells(Cstart), .Cells(Cend))
End With
If Fun Is Nothing Then
Set Fun = Rng
Else
Set Fun = Application.Union(Fun, Rng)
End If
Next i
Set CellsForExport = Fun
End Function
函数CellsForExport
返回调用过程SelectCells
指定的范围。在这种情况下,调用过程不会选择范围。相反,它打印其地址。这是出于测试目的。 CellsForExport("$B:$C, $E:$E, G").Select
将选择单元格。您也可以在某处粘贴此范围,或以任何其他方式操纵它,您可以操作范围。
请注意,在指定列时可以省略$
符号。您也不必指定E:E
来定义单个列,但如果有人做了所有宏,则会对其进行排序。空白无所谓,逗号是至关重要的。