我是 VBA 的新手。我想定義我自己的結構,就像在 Delphi 中一樣:
type Name = Record
Declarations ...
end;
例如在 Delphi 中,我會寫:
type TNUMBER = Record
value: integer;
min: integer;
max: integer;
count: byte;
processed: boolean;
end;
var my_numbers: array[0..74] of TNUMBER;
i: integer;
range: byte;
begin
range := 7;
for i:=0 to 74 do
if not my_numbers[i].processed then
begin
my_numbers[i].value := round(somenumber);
my_numbers[i].min := my_numbers[i].value-range;
my_numbers[i].max := my_numbers[i].value range;
my_numbers[i].count := 0;
end
else
begin
if (somenumber >= my_numbers[i].min) AND
(somenumber <= my_numbers[i].max) then
begin
inc(my_numbers[i].count); ' increase counter
end;
end;
所以我宣告了 type 或 structure TNUMBER,其中包含各種成員。然后我創建了這種型別的陣列,并處理數字并更改變數參考的記錄my_numbers。所以我需要為 VBA 創建類似的結構來計算從 Excel 單元格獲得的數字。此結構的目的是計算數字是否彼此太近,或者它們是否足夠遠以(決定是否)在我的圖表上繪制點或圓。
uj5u.com熱心網友回復:
您可以像這樣在 VBA 中重寫您的示例:
Option Explicit
Private Type TNUMBER 'Or Public if needed in another module
value As Integer
min As Integer
max As Integer
count As Byte
processed As Boolean
End Type
Public Sub test()
Dim my_numbers(0 To 74) As TNUMBER
Dim i As Integer
Dim range As Byte
Dim somenumber As Double
range = 7
For i = 0 To 74
If Not my_numbers(i).processed Then
my_numbers(i).value = Round(somenumber)
my_numbers(i).min = my_numbers(i).value - range
my_numbers(i).max = my_numbers(i).value range
my_numbers(i).count = 0
Else
If (somenumber >= my_numbers(i).min) And _
(somenumber <= my_numbers(i).max) Then
my_numbers(i).count = my_numbers(i).count 1
End If
End If
Next i
End Sub
然后你當然會執行該test方法。
此外,您不想使用:
For i = 0 To 74
而是您會使用:
For i = LBound(my_numbers) To UBound(my_numbers)
以便如果陣列大小更改,代碼仍會運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313361.html
上一篇:如何使用Laravel基于MYSQL列生成Excel檔案
下一篇:將單元格地址分配給陣列中的范圍
