繁体   English   中英

Excel VBA如何选择单元格的可变范围

[英]Excel VBA How to select variable range of cells

我试图搜索此问题,但没有发现类似问题。

我仍然是VBA的新手,我正在尝试创建宏,该宏根据用户的输入选择单元格的范围,然后从这些选定的单元格中创建轮廓网格。

我的Excel工作簿中有两个ActiveX按钮,用户可以使用它们输入要使用的网格大小(宽度和高度)。 我正在努力将上述宽度和高度包含在我的代码中。 这是按钮的代码(一点都不不清楚):

Private Sub Height_Click()
Dim Height As Integer
Height = InputBox("Syötä ruudukon korkeus", "Ruudukon korkeus", "Syötä tähän")
Range("E5") = Height
End Sub

和宽度按钮:

Private Sub Width_Click()
Dim Width As Integer
Width = InputBox("Syötä ruudukon leveys", "Ruudukon leveys", "Syötä tähän")
Range("E2") = Width
End Sub

我希望我的网格从单元格“ G2”开始,并从那里开始向右和向下扩展,并更改所选单元格的大小。 但是我写的代码根本不起作用(正如我所想)。 这是代码:

Private Sub CreateGrid_Click()
Columns("G:G+E2").Select
    Selection.ColumnWidth = 1
Rows("2:2+E5").Select
    Selection.RowHeight = 1
End Sub

单元格“ E2”和“ E5”分别具有宽度和高度值。 当我单击CreateGrid按钮时,没有任何反应。 有什么想法可以使这段代码起作用吗? 非常感谢您提供所有答案。

-Teemu

诀窍是使用记录宏按钮。 此函数将记录正在记录的所有您正在使用excel手册的指令。示例:1.-启动记录宏并为宏键入名称。 2.-选择任何单元格并键入一个值3.-选择所需的单元格范围4.-按停止宏录制。 5.-按Alt + F11键,您会看到excel会生成打开宏录制时在excel中所做的代码,即使您知道如何在单元格中键入值或选择它的范围也是如此。

编辑:

Private Sub CreateGrid_Click()
Range("G2:" & Range("G2").Offset(Range("E5").Value,Range("E2").Value).Addresslocal).Select
End Sub

如果这样做没有达到您的期望,请告诉我,我将尽力帮助纠正它。

您要查找的命令是Range().Select但您需要创建括号中的字符串。 因此,如果我理解正确,那么您已经在变量中存储了要从G2偏移的行数和列数,对吗?

为了获得列字母,您可以在此处使用微软提供的功能

Function ConvertToLetter(iCol As Integer) As String
   Dim iAlpha As Integer
   Dim iRemainder As Integer
   iAlpha = Int(iCol / 27)
   iRemainder = iCol - (iAlpha * 26)
   If iAlpha > 0 Then
      ConvertToLetter = Chr(iAlpha + 64)
   End If
   If iRemainder > 0 Then
      ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
   End If
End Function

但是由于您是从G开始的,因此必须像下面这样调用该函数:

ConvertToLetter(7+numerColumns)

您的最终代码将如下所示

Range("G" & 2 + numberLines & ":" & ConvertToLetter(7+numberCols) & numberLines).Select

其中numberLines是要偏移的行数,numberCols是列数。

编辑:如@Kyle所指出的,一种较短的方法是使用:

Range("G2").Offset(numberLines,numberCols).Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM