创build一个基于Excel中的用户input大小的表?

为了logging,我正在使用Excel 2010。

我试图教自己的VBA工作(他们给实习生的VBA的东西…),我陷入了最简单的事情。

我正在试图制作一个三列宽的表格。 表中的行数必须基于用户的input量。 在我的代码中,这是用户为Count的值。

我的问题是,我不知道如何select我需要的范围。 我知道如何select范围的唯一方法是使用:

 ActiveCell.Range("Top left cell:Bottom right cell").Select 

如果是从A1C8 ,我该怎么做? 我希望它会像下面这样工作:

 ActiveCell.Range("A1:C(count)").Select 

这是我迄今为止:

 Option Explicit Dim Count As Long Dim CFLArray() As Variant Sub TableCreation1() Range("A1").Select ActiveCell.FormulaR1C1 = "Time (days)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "CFL (measured)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "De (estimated)" ActiveCell.Offset(0, -2).Range("A1:C1").Select Selection.Font.Bold = True ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit ActiveCell.Offset(0,1).Columns("A:A").EntireColumn.EntireColumn.AutoFit ActiveCell.Offset(0,2).Columns("A:A").EntireColumn.EntireColumn.AutoFit ActiveCell.Select End Sub Sub FindRange() Range("A2").Select Count = InputBox("How many pairs of data do you have? ") End Sub 

大约一天前,我用自己的作品教过自己的VBA,但是在这里我找不到任何东西。 我的互联网search也失败了。 最糟糕的是我知道这将是非常简单的。

就这么简单! 你刚刚一点点。

更改: ActiveCell.Range("A1:C(count)").Select

要: ActiveCell.Range("A1:C" & count).Select

虽然,我没有看到你的代码中的任何countvariables。

如果你知道它始终是同一列,你可以这样做:

Range("A1:C" & ActiveSheet.Range("C1048576").End(xlUp).Row).Select

1048576是Excel 2010中的最大行数。对于您的数据,这可能并不完美,但希望这会使您开始朝正确的方向发展)

另外,就像VBA的一个附加点,在大多数情况下你不需要使用Select 。 例如,这个:

 Range("A1").Select ActiveCell.FormulaR1C1 = "Time (days)" 

可以更简单地重写为:

 Range("A1").FormulaR1C1 = "Time (days)" 

如果你只是使用文字:

 Range("A1").value = "Time (days)" 

我还想指出,使用ActiveCell.Range("A1:C" & count).Select是不一样的ActiveSheet.Range("A1:C" & count).Select 。select。 根据当前select的单元格,这些将select不同的范围。 如果你的意思是A1:C8 ,而不是A1:C8 (relative to the current cell) ,那么你就需要使用ActiveSheet (或者省略)版本。

那将是:

 ActiveCell.Range("A1:C" & Count).Select 

&是string连接运算符。


附注 – 您的第一个过程(TableCreation1)可以更简洁地重写:

 Sub TableCreation1() Range("A1") = "Time (days)" Range("B1") = "CFL (measured)" Range("C1") = "De (estimated)" Range("A1:C1").Font.Bold = True Columns("A:C").EntireColumn.EntireColumn.AutoFit End Sub