VBA中RANGE如何引用變數,excel VBA中 Range函式將列作為變數怎麼表示?

時間 2021-08-11 18:15:20

1樓:庹甜恬

一項技能的學習過程中,最難的有兩個時間段,沒入門前不知道怎麼學,入門後不知道怎麼快速提高。反而當技術提高到一個層次後,能融會貫通,再看什麼都不那麼難了。我們每天講解一個vba的一個知識點,我們一起學習,共同進步。

我們都知道range物件是excel應用程式中最常用的物件,一個range物件代表一個單元格、一行、一列、包含一個或者更多單元格區域(可以是連續的單元格,也可以是不連續的單元格)中選定的單元格,甚至是多個工作表上的一組單元格,在操作excel 內的任何區域之前都需要將其表示為一個range物件,然後使用該range物件的方法和屬性。range和cells都可以表達單元格物件,只是range的屬性和方法比cells的多。

在vba中經常需要引用單元格或單元格區域區域,主要有以下幾種方法。

1-1 使用range屬性

vba中可以使用range屬性返回單元格或單元格區域,如下面的**所示。

1 sub rngselect()

sheet1.range("a3:f6, b1:c5").select

003 end sub

**解析:

rngselect過程使用select方法選中a3:f6,b1:c5單元格區域。

range屬性返回一個range物件,該物件代表一個單元格或單元格區域,語法如下:

range(cell1, cell2)

引數cell1是必需的,必須為 a1 樣式引用的巨集語言,可包括區域操作符(冒號)、相交區域操作符(空格)或合併區域操作符(逗號)。也可包括美元符號(即絕對地址,如“$a$1”)。可在區域中任一部分使用區域性定義名稱,如range("b2:

lastcell"),其中lastcell為已定義的單元格區域名稱。

引數cell2是可選的,區域左上角和右下角的單元格。

執行sub rngselect過程,選中a3:f6, b1:c5單元格區域

2樓:淡了流年

如果你的那個colletter變數代表的是一個列號字母。

如果是用vba,則對range的select 操作是無意義的,不用選擇直接操作就選擇單行整行

range("1:1")

單列,range("a:a")

遍歷range中的每個一單元格

dim rng as range

dim trng as range

set tng=range("a:a")

for each trng in rng

debug.print trng

next

set rng=nohing

set trng=nothing

3樓:匿名使用者

如果你的那個colletter變數代表的是一個列號字母,可以這樣寫range("d2:" & colletter & "9").select

如果你的colnum變數是一個數字,可以這樣寫range("d2:" & cells(2,colnum).address(0,0)).select

注意:在vba程式設計當中,所有的變數不可能寫在引號裡面,寫在引號裡面就成了字串了

vba 中range如何引用變數?

4樓:淡了流年

如果你的那du個colletter變數代表zhi的是一個列號字母。

如果dao是用vba,則對range的內select 操作是無意義的,不用選擇容直接操作就選擇單行整行

range("1:1")

單列,range("a:a")

遍歷range中的每個一單元格

dim rng as range

dim trng as range

set tng=range("a:a")

for each trng in rng

debug.print trng

next

set rng=nohing

set trng=nothing

excel vba中 range函式將列作為變數怎麼表示? 5

5樓:歲月不及你動人

range型別的函式有多種形式,具體如下:

1.您可以嘗試用range(cells(行1,列1),cells(行2,列2))這種形式,比較靈活;

2.也可以用cells(行,列)這樣的形式表示單元格;

3.還可以用columns(列)表示一列;

4.也可以用range(columns(列1),columns(列2))來表示連續的多列。

這裡的"行"和"列"都是整數,不是字母,數字有時會比字母更靈活。

6樓:一年孤獨

直接用就是了:

function getrange(col as string)

getrange = workbooks(1).sheets(2).range(col & "2:" & col & "2012")

'或者'getrange = workbooks(1).sheets(2).range(replace("a2:a2012","a", col))

end function

getrange("b") 'workbooks(1).sheets(2).range("b2:b2012")

getrange("ab") 'workbooks(1).sheets(2).range("ab2:ab2012")

7樓:匿名使用者

首先range是屬性,不是函式,它本身表示一個區域引用,而不是說它作為函式返回一個區域。

將列作為變數一般可以用cells(row,col)屬性中的col(列號)作為變數,作為區域引用的range屬性可以用range(cells(row1,col1),cells(row2,col2))來表示

8樓:浩哥奕弟

從一個工作表中提取資料到另一個工作表,一般思路是從第一個表中將資料裝入陣列,再將陣列裝入第二個表。

例如:arr=sheet1.range("a1:a100")

sheet2.range("a1").resize(ubound(arr),ubound(arr,2))=arr

9樓:匿名使用者

workbooks(1).sheets(2).range(cells(2,m), cells(2012,m)).value

range 引用單元格時,變數只能為行如range("a" & m) 表示a列第m行的單元格

10樓:匿名使用者

親測以下方式可行

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

11樓:

range型別的函式有多種形式,您可以嘗試用range(cells(行1,列1),cells(行2,列2))這種形式,比較靈活,也可以用cells(行,列)這樣的形式表示單元格,還可以用columns(列)表示一列,也可以用range(columns(列1),columns(列2))來表示連續的多列,這裡的"行"和"列"都是整數,不是字母.數字有時會比字母更靈活

您補貼上來的內容是行不通的,區域賦值不可以直接進行,而是要對該區域內的每一個單元格賦值,對於您想表達的意思,有必要外加一個for迴圈來解決這個問題,最關鍵的賦值語句應該是類似

range(....).cells(r,c)=range(***x).cells(r,c)

這樣的語句

12樓:三井熊

range(變數a & "3:" & 變數a & "2012")

13樓:匿名使用者

range(cells(3,i),cells(2012,i)) , i 可以是123,代表a,b,c

excel vba中range函式把列作為變數怎麼表示?

14樓:歲月不及你動人

range型別的函式有多種形式,具體如下:

1.您可以嘗試用range(cells(行1,列1),cells(行2,列2))這種形式,比較靈活;

2.也可以用cells(行,列)這樣的形式表示單元格;

3.還可以用columns(列)表示一列;

4.也可以用range(columns(列1),columns(列2))來表示連續的多列。

這裡的"行"和"列"都是整數,不是字母,數字有時會比字母更靈活。

15樓:李夏璇鈕浩

workbooks(1).sheets(2).range(cells(2,m),

cells(2012,m)).value

range

引用單元格時,變數只能為行如range("a"&m)表示a列第m行的單元格

VBA如何在模組中引用另模組的函式

職場戴老師 1.什麼是dll檔案 dll是dynamic link library 的縮寫形式,dll是一個包含可由多個程式同時使用的 和資料的庫。dll不是可執行檔案。動態連結提供了一種方法,使程序可以呼叫不屬於其可執行 的函式。函式的可執行 位於一個 dll 中,該 dll 包含一個或多個已被編...

VBA中如何定義文字型變數,Excel 在VBA中怎麼定義字串變數

物件就是的賦值,必需使用set語句 public sub 測試 dim dyg as range set dyg range b2 end sub 你完全可以不用定義為單元格物件,直接賦值就行了public sub 測試 dim dyg 定義字串變數 dyg range b2 end sub 參考下...

VBA如何用變數表示控制元件名

如果該控制元件位於userform窗體中,那麼我們可以用controls集合來表示指定的控制元件,例如,userform1中有三個控制元件,label1,label2,textbox1 那麼,我們可以這樣表示 a 1 b 2 userform1.controls label a caption 表示...