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

2021-08-11 08:19:18 字數 5240 閱讀 4449

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整型變數問題,關於VBA中變數問題!

不用那麼麻煩 如果你只是想比較單元格顯示的內容的大小的話只要用cells i,j text來代替cells i,j value就可以了 cells的預設屬性是value,所以cells i,j 表示的是cells i,j value 所以你的 可以改成 dim i as integer,j as i...

js(A)中如何引用js(B)中的變數

這樣寫就可以了 你在一個函式內 var宣告的變數,是不能直接在例專外一個函式內使用的你在函式外宣告變屬量,那在函式內就可以使用了例外,要注意下 的順序 這樣取不到!把var abc 寫在function a 外面嘛,何必要寫在裡面呢?這樣的話你把abc定義成全域性變數就可以了 如何在一個js檔案中引...

Excel請問RANGE中變數的寫法

陽光上的橋 range的引數是字串,要使用變數是可以的,下面舉兩個例子 dim x,y,z x a y 2 z a2 示例一 使用部分變數的三種情況 msgbox range x y addree a2msgbox range d y addree d2msgbox range x 3 addree...