根据Excel中的用户输入创建一个大小的表格?

时间:2012-07-06 13:53:18

标签: excel vba input excel-vba

为了记录,我正在使用Excel 2010。

我正在努力教自己VBA在工作中的工作(他们给实习生VBA的东西......),而我却陷入了最简单的事情。

我正在尝试创建一个三列宽的边界表。表中的行数必须基于用户的输入量。在我的代码中,这是用户为Count提供的值。

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

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,但我在那里找不到任何东西。我的互联网搜索也失败了。最糟糕的是我知道它会非常简单。

2 个答案:

答案 0 :(得分:4)

就这么简单!你刚刚离开了一点点。

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

收件人:ActiveCell.Range("A1:C" & count).Select

尽管如此,我在代码中看不到任何count变量。

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

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).SelectActiveSheet.Range("A1:C" & count).Select不同。根据当前选择的单元格,这些将选择不同的范围。如果您的意思是A1:C8,而不是A1:C8 (relative to the current cell),那么您将需要使用ActiveSheet(或省略)版本。

答案 1 :(得分:3)

那将是:

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

&是字符串连接运算符。


旁注 - 您的第一个程序(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