excel VBA中 Range函数将列作为变量怎么表示? 5
Workbooks(1).Sheets(2).Range(""m" & 2: "m" & 2012").Value = Workbooks(2).Sheets(7).Range("C3:C2012").Value 展开
您补贴上来的内容是行不通的,区域赋值不可以直接进行,而是要对该区域内的每一个单元格赋值,对于您想表达的意思,有必要外加一个FOR循环来解决这个问题,最关键的赋值语句应该是类似
range(....).cells(r,c)=range(XXXX).cells(r,c)
这样的语句
range类型的函数有多种形式,具体如下:
1.您可以尝试用range(cells(行1,列1),cells(行2,列2))这种形式,比较灵活;
2.也可以用cells(行,列)这样的形式表示单元格;
3.还可以用Columns(列)表示一列;
4.也可以用range(columns(列1),columns(列2))来表示连续的多列。
这里的"行"和"列"都是整数,不是字母,数字有时会比字母更灵活。
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。该语言于1993年由微软公司开发的的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
将列作为变量一般可以用cells(row,col)属性中的col(列号)作为变量,作为区域引用的Range属性可以用range(cells(row1,col1),cells(row2,col2))来表示
Sub test()
Dim ColName1 As String, ColName2 As String, ColNum As Long, a() As Long
Dim i As Integer, j As Integer
ReDim a(1 To 5, 1 To 2)
For i = 1 To 5 '给aa数组赋值
For j = 1 To 2
a(i, j) = i * j
Next
Next
For i = 4 To 10 Step 3 '从4列即“d”列开始
ColNum = i * 1 '起始列的变量表示
ColName1 = GetExcelColumn(i * 1) '起始列变量名称
ColName2 = GetExcelColumn(i * 1 + 1) '终止列变量名称
Sheets("Sheet1").Range(ColName1 & "1:" & ColName2 & "5") = a
'将数组a赋值到 Range:D1:E5, G1:H5,J1:K5
Next
End Sub
Function GetExcelColumn(columnNumber As Long)
Dim div As Long, ColName As String, modulo As Long
div = columnNumber: ColName = vbNullString
Do While div > 0
modulo = (div - 1) Mod 26
ColName = Chr(65 + modulo) & ColName
div = ((div - modulo) / 26)
Loop
GetExcelColumn = ColName
End Function