1樓:匿名使用者
不用那麼麻煩~如果你只是想比較單元格顯示的內容的大小的話只要用cells(i,j).text來代替cells(i,j).value就可以了~cells的預設屬性是value,所以cells(i,j)表示的是cells(i,j).
value~所以你的**可以改成:
dim i as integer,j as integer,s,n as integer
for i=1 to 4'行
s=0for j=1 to 4'列
if cells(i,j).text>s then s=cells(i,j).text:n=j
next j
cells(i, n).interior.color = rgb(255, 255, 0)
next i
問題補充:高手你還在嗎 你有qq嗎 能和你聊一下嗎?
2樓:匿名使用者
不好意思,昨天晚上有事沒來得及給你寫,剛寫了一下,測試過沒有問題,你看一下:
'**開始******************************==
sub temp()
dim irow, icolumn, imax, iimaxcolumn, m, n, i, j as integer
dim b() as integer
m = 10 '行
n = 10 '列
range("a1:" & chr(64 + n) & m).select
with selection.interior
.pattern = xlnone
.tintandshade = 0
.patterntintandshade = 0
end with
for irow = 1 to m
iimaxcolumn = 1
imax = round(cells(irow, 1), 2)
for icolumn = 2 to n
if round(cells(irow, icolumn), 2) > imax then
j = 0
iimaxcolumn = icolumn
imax = round(cells(irow, icolumn), 2)
else
if round(cells(irow, icolumn), 2) = imax then
j = j + 1
redim preserve b(j) as integer
if j = 1 then
b(j - 1) = iimaxcolumn
imax = round(cells(irow, icolumn), 2)
end if
b(j) = icolumn
imax = round(cells(irow, icolumn), 2)
end if
end if
next icolumn
if j = 0 then
cells(irow, iimaxcolumn).interior.color = rgb(255, 255, 0)
else
for i = 0 to j
if imax <> "" then cells(irow, b(i)).interior.color = rgb(255, 255, 0)
next i
end if
next irow
cells(1, 1).select
end sub
'**結束******************************==
3樓:
格式化結果!比如
s = format(0.546885524,"0.00")
這樣就能保留兩位小數點了,s的結果就變成了 0.54 了
4樓:匿名使用者
把判斷那行"if..."的前半部分,裡邊改成:
if int(100*cells(ij))>int(100*s)
後半行一樣,我手裡沒裝環境,如果不對請在問題補充裡告訴我。
5樓:匿名使用者
dim i as integer,j as integer,s,n as integer
for i=1 to 4'行
s=0for j=1 to 4'列
if round(cells(i,j),2)>s then s=round(cells(i,j),2):n=j
next j
cells(i, n).interior.color = rgb(255, 255, 0)
next i
子易空間站 - excel培訓專家
為什麼vba的integer變數最大是32767?
6樓:扈懷煒
vb的整型取值範圍是-32768 到 32767 之間,這是因為整型數佔2個位元組,16位,其中最高位表示符號位,0表示整數,1表示負數,最大的正數為: (0111 1111 1111 1111)b,化成十進位制就是 32767.
如果在程式中需要儲存的資料超過-32768和32767這個範圍,可以使用長整型 long,長整型佔用的空間是4個位元組,其取值範圍是 -2147483648 ---- 2147483648,這個取值足夠表示。
7樓:砍侃看
因為vba中integer是16位的,16位二進位制數只能表示0-32767之間的數字
8樓:學習就能進步
樓上說得對,16位的,那就是2^16,65536,有符號的話最大的就是32767
資料庫 vba 整型。長整型。單精度 雙精度 是什麼意思 請高手用通俗的語言解釋 不要用計算機裡的說法來解釋
9樓:御含靈
◆ integer 資料型別
integer 變數儲存為 16位(2 個位元組)的數值形式,其範圍為 -32,768 到 32,767 之間。integer 的型別宣告字元是百分比符號 (%)。
也可以用 integer 變數來表示列舉值。列舉值可包含一個有限集合,該集合包含的元素都是唯一的整數,每一個整數都在它使用時的上下文當中
有其特殊意義。列舉值為在已知數量的選項中做出選擇提供了一種方便的方法,例如,black = 0,white = 1 等等。較好的程式設計作法是使
用 const 語句將每個列舉值定義成常數。
◆ long 資料型別
long(長整型)變數儲存為 32 位(4 個位元組)有符號的數值形式,其範圍從 -2,147,483,648 到 2,147,483,647。long 的型別宣告字元為和號 (&)。
◆ single 資料型別
single(單精度浮點型)變數儲存為 ieee 32 位(4 個位元組)浮點數值的形式,它的範圍在負數的時候是
從 -3.402823e38 到 -1.401298e-45,而在正數的時候是從 1.401298e-45 到 3.402823e38。
single 的型別宣告字元為感嘆號 (!)。
◆ double 資料型別
double(雙精度浮點型)變數儲存為 ieee 64 位(8 個位元組)浮點數值的形式,它的範圍在負數的時候是
從 -1.79769313486231e308 到 -4.94065645841247e-324,而正數的時候是
從 4.94065645841247e-324 到 1.79769313486232e308。double 的型別宣告字元是數字符號 (#)。
10樓:匿名使用者
123 就是整型,長整型就是比整型表示的數字範圍更大,單精度一般用來表示小數,雙精度就是比單精度表示得更精確,一般就是小數點後面可以有更多位數。
關於vba中變數問題!
11樓:
不影響,原因如下:
1、在過程中宣告,該變數只能在該過程中使用,其他過程中不能使用這個變數和常量,這中變數成為區域性變數或過程級變數
2、call 語句:將控制權轉移到一個 sub 過程,function 過程,或動態連結庫 (dll)過程。
3、臨時變數的值可以傳給call呼叫的過程
12樓:姓王的
sub裡面的變數都只在本過程內有效,不會衝突的
vba模組中定義的整數型公共變數,在視窗中使用提示型別錯誤
13樓:
使用時超出了整數範圍。建議直接dim不寫型別。等找到合適的型別再具體宣告
14樓:小李無刀
你**是怎麼的寫的呢
excel 在vba中怎麼定義數值變數
vba變數宣告問題
15樓:不想起名字了
是的如果在 dim語句中沒有指明,預設variant一般情況下為了清楚
一行只定義一個變數
dim i as integer
dim j as integer
dim k as integer
dim i,j,k as integer 相當於dim i
dim j
dim k as integer
16樓:七色海潮
剛才查了下資料 確實是只有k是integer,另兩個 是variant
17樓:沉思星空下
是的,兩者效果不一樣
關於VBA的問題,一個關於VBA的問題
樓主,你的問題在於你把 select case d14中的d14認為是單元格d14,其實d14根本就不是你的單元格d14,而是一個未宣告和賦值的variant變數,其值預設為 字串,它是永遠大於6的。所以你的e18永遠等於999.不等於1000是因為你在we we 1這個計數發生前,就把值賦給了e1...
VBA中RANGE如何引用變數,excel VBA中 Range函式將列作為變數怎麼表示?
一項技能的學習過程中,最難的有兩個時間段,沒入門前不知道怎麼學,入門後不知道怎麼快速提高。反而當技術提高到一個層次後,能融會貫通,再看什麼都不那麼難了。我們每天講解一個vba的一個知識點,我們一起學習,共同進步。我們都知道range物件是excel應用程式中最常用的物件,一個range物件代表一個單...
VBA問題求教
private sub worksheet change byval target as range if sheet1.range b1 value 2 and sheet1.range a1 value 1 then sheet2.activate 啟用sheet2表 sheet2.range ...