Applies ToExcel cho Microsoft 365 Excel cho Microsoft 365 dành cho máy Mac Excel cho web Excel 2024 Excel 2024 dành cho máy Mac Excel 2021 Excel 2021 cho Mac Excel 2019 Excel 2016 Excel for iPad Excel cho iPhone Excel cho máy tính bảng Android Excel cho điện thoại Android

Quan trọng:  Cảnh báo    Việc chỉnh sửa sổ đăng ký không đúng có thể gây tổn hại nghiêm trọng đến hệ điều hành của bạn, buộc bạn phải cài lại hệ điều hành. Microsoft không thể đảm bảo có thể giải quyết các vấn đề xảy ra do việc chỉnh sửa sổ đăng ký không đúng. Trước khi chỉnh sửa sổ đăng ký, hãy sao lưu các dữ liệu quý giá. Để có những thông tin mới nhất về việc dùng và bảo vệ sổ đăng ký trên máy tính của bạn, hãy xem Trợ giúp Microsoft Windows.

Bài viết này mô tả cách dùng và cú pháp công thức của hàm CALL, REGISTER và REGISTER.ID trong Microsoft Excel.

Lưu ý:  Hàm CALL và REGISTER không sẵn dùng trong Excel dành cho web.

Trong bài viết này

Mô tả

Bên dưới là mô tả về đối số và các kiểu giá trị trả về được dùng trong các hàm CALL, REGISTER và REGISTER.ID. Đối số và giá trị trả về khác nhau một chút tùy thuộc vào môi trường thao tác của bạn và sự khác nhau này được ghi chú trong bảng kiểu dữ liệu.

Đầu Trang

Kiểu Dữ liệu

Trong hàm CALL, REGISTER và REGISTER.ID, đối số kiểu văn bản xác định kiểu dữ liệu của giá trị trả về và các kiểu dữ liệu của tất cả các đối số cho hàm DLL hoặc nguồn mã. Ký tự đầu tiên trong kiểu văn bản sẽ xác định kiểu dữ liệu của giá trị trả về. Các ký tự còn lại sẽ cho biết các kiểu dữ liệu về tất cả các đối số. Ví dụ: một hàm DLL trả về một số dấu phẩy động và nhận một số nguyên và một số dấu phẩy động làm các đối số sẽ cần "BIB" cho đối số kiểu văn bản.

Bảng sau đây bao gồm một danh sách đầy đủ về các mã kiểu dữ liệu mà Microsoft Excel nhận dạng được, mô tả về từng kiểu dữ liệu, cách thức đối số hoặc giá trị trả về được truyền và khai báo thông thường cho kiểu dữ liệu trong ngôn ngữ lập trình C.

Mã

Mô tả

Truyền theo

C Khai báo

A

Logic(FALSE = 0), TRUE = 1)

Giá trị

số nguyên ngắn

B

Số dấu phẩy động 8-byte IEEE

Giá trị(Windows)

Tham chiếu (Macintosh)

kép(Windows)

kép* (Macintosh)

C

Chuỗi kết thúc bằng giá trị null (độ dài tối đa của chuỗi = 255)

Tham chiếu

char *

D

Chuỗi đếm byte (byte đầu tiên có chứa độ dài của chuỗi, độ dài tối đa của chuỗi = 255 ký tự)

Tham chiếu

Ký tự không dấu *

E

Số dấu phẩy động 8-byte IEEE

Tham chiếu

kép *

F

Chuỗi kết thúc bằng giá trị null (độ dài tối đa của chuỗi = 255 ký tự)

Tham chiếu (thay đổi tại chỗ)

char *

G

Chuỗi đếm byte (byte đầu tiên có chứa độ dài của chuỗi, độ dài tối đa của chuỗi = 255 ký tự)

Tham chiếu (thay đổi tại chỗ)

ký tự không dấu *

H

Số nguyên 2 byte không dấu

Giá trị

số nguyên ngắn không dấu

I

Số nguyên 2 byte có dấu

Giá trị

số nguyên ngắn

J

Số nguyên 4 byte có dấu

Giá trị

số nguyên dài

K

Mảng

Tham chiếu

FP *

L

Logic(FALSE = 0, TRUE = 1)

Tham chiếu

số nguyên ngắn *

M

Số nguyên 2 byte có dấu

Tham chiếu

số nguyên ngắn *

N

Số nguyên 4 byte có dấu

Tham chiếu

số nguyên dài *

O

Mảng

Tham chiếu

Ba đối số được truyền:số nguyên ngắn không dấu *số nguyên ngắn không dấu*kép [ ]

P

Cấu trúc dữ liệu OPER Microsoft Excel

Tham chiếu

OPER *

R

Cấu trúc dữ liệu XLOPER Microsoft Excel

Tham chiếu

XLOPER *

Đầu Trang

Chú thích

  • Khai báo ngôn ngữ C căn cứ trên giả định là trình biên dịch của bạn mặc định là 8 byte kép, số nguyên ngắn 2 byte và số nguyên dài 4 byte.

  • Trong môi trường lập trình Microsoft Windows, tất cả các con trỏ đều là các con trỏ xa. Ví dụ: bạn phải khai báo mã kiểu dữ liệu D là unsigned char far * trong Microsoft Windows.

  • Tất cả các hàm trong các DLL và nguồn mã đều được gọi bằng quy ước gọi Pascal. Hầu hết các trình biên dịch C cho phép bạn dùng quy ước gọi Pascal bằng cách thêm từ khóa Pascal vào khai báo của hàm, như được minh họa trong ví dụ sau đây: pascal void main (rows,columns,a)

  • Nếu một hàm dùng kiểu dữ liệu truyền theo tham chiếu cho giá trị trả về của nó, bạn có thể truyền một con trỏ làm giá trị trả về. Microsoft Excel sẽ biên dịch con trỏ null là giá trị lỗi #NUM! .

Đầu Trang

Thông tin về Kiểu Dữ liệu Bổ sung

Phần này bao gồm những thông tin chi tiết về các kiểu dữ liệu F, G, K, O, P và R cùng các thông tin khác về đối số kiểu văn bản.

Kiểu Dữ liệu F và G

Với kiểu dữ liệu F và G, một hàm có thể thay đổi một vùng đệm của chuỗi do Microsoft Excel định phần. Nếu mã kiểu giá trị trả về là F hoặc G, Microsoft Excel sẽ bỏ qua giá trị do hàm trả về. Thay vào đó, Microsoft Excel sẽ tìm kiếm danh sách bao gồm các đối số của hàm để lấy kiểu dữ liệu tương ứng đầu tiên (F hoặc G) và sau đó nhận các nội dung hiện tại trong vùng đệm của chuỗi làm giá trị trả về. Microsoft Excel phân bổ 256 byte cho đối số, vì vậy hàm có thể trả về một chuỗi lớn hơn mà nó đã nhận.

Đầu Trang

Kiểu Dữ liệu K

Kiểu dữ liệu K dùng một con trỏ trỏ tới một cấu trúc FP có kích thước biến đổi. Bạn phải xác định cấu trúc này trong DLL hoặc nguồn mã như sau:

typedef struct _FP{    unsigned short int rows;    unsigned short int columns;    double array[1];        /* Actually, array[rows][columns] */} FP;

Khai báo double array[1] chỉ cấp chỗ lưu trữ cho một mảng phần tử đơn. Số các phần tử trong mảng thực bằng với số hàng nhân với số cột.

Đầu Trang

Kiểu Dữ liệu O

Chỉ dùng kiểu dữ liệu O làm đối số, không dùng làm một giá trị trả về. Kiểu dữ liệu này truyền ba phần tử: một con trỏ trỏ tới số hàng trong một mảng, một con trỏ trỏ tới số cột trong một mảng và một con trỏ trỏ tới một mảng hai chiều bao gồm các số dấu phẩy động.

Thay vì trả về một giá trị, một hàm có thể thay đổi một mảng do kiểu dữ liệu O truyền tới. Để thực hiện điều này, bạn có thể dùng ">O" làm đối số kiểu văn bản. Để biết thêm thông tin, hãy xem phần "Thay đổi Tại chỗ — Hàm được khai báo là Rỗng" bên dưới.

Kiểu dữ liệu O được tạo ra để tương thích trực tiếp với các Fortran DLL, vốn truyền các đối số theo tham chiếu.

Đầu Trang

Kiểu Dữ liệu P

Kiểu dữ liệu P là một con trỏ trỏ tới một cấu trúc OPER. Cấu trúc OPER có chứa dữ liệu 8 byte, theo sau là mã định danh 2 byte nhằm xác định kiểu dữ liệu. Với kiểu dữ liệu P, một hàm DLL hoặc một mã nguồn có thể nhận và trả về mọi kiểu dữ liệu Microsoft Excel.

Cấu trúc OPER được xác định như sau:

typedef struct _oper

{    union    {        double num;        unsigned char *str;        unsigned short int bool;        unsigned short int err;        struct        {            struct _oper *lparray;            unsigned short int rows;            unsigned short int columns;        } array;    } val;    unsigned short int type;} OPER;

Trường kiểu có chứa một trong số những giá trị này.

Kiểu

Mô tả

Trường Val sẽ dùng

1

Số

num

2

Chuỗi (byte đầu tiên có chứa độ dài chuỗi)

str

4

Boolean (logic)

bool

16

Lỗi: các giá trị lỗi là:

0#NULL!

7#DIV/0!

15#Value!

23#REF!

29#NAME?

36#NUM!

42#N/A

err

64

Mảng

array

128

Đối số thiếu

256

Ô rỗng

Chỉ có thể dùng hai giá trị cuối cùng làm các đối số, không dùng làm giá trị trả về. Giá trị đối số thiếu (128) được truyền đi khi hàm gọi bỏ qua một đối số. Giá trị ô rỗng (256) được truyền đi khi hàm gọi truyền một tham chiếu tới một ô rỗng.

Đầu Trang

Kiểu Dữ liệu R — Gọi các hàm Microsoft Excel từ các DLL

Kiểu dữ liệu R là một con trỏ trỏ tới một cấu trúc XLOPER, vốn là một phiên bản nâng cao của cấu trúc OPER. Ở phiên bản Microsoft Excel 4.0 và các phiên bản sau đó, bạn có thể dùng kiểu dữ liệu R để viết các hàm DLL và các nguồn mã gọi được các hàm Microsoft Excel. Với cấu trúc XLOPER, một hàm DLL có thể truyền các tham chiếu trang tính và thực thi điều khiển dòng, ngoài dữ liệu truyền ra. Mô tả đầy đủ về kiểu dữ liệu R và giao diện lập trình ứng dụng (API) Microsoft Excel không nằm trong phạm vi của chủ đề này. Trong Hướng dẫn của Nhà phát triển Microsoft Office XP có bao gồm các thông tin chi tiết về kiểu dữ liệu R, API Microsoft Excel và rất nhiều phương diện kỹ thuật về Microsoft Excel.

Đầu Trang

Hàm Biến đổi và Tính toán lại

Microsoft Excel thường tính toán một hàm DLL (hoặc một nguồn mã) chỉ khi chúng được nhập vào một ô, khi một trong những thay đổi thuộc ô giá trị chính của chúng hoặc khi ô đó được tính toán trong thời gian một macro chạy. Trên một trang tính, bạn có thể tạo một hàm DLL hoặc một nguồn mã biến đổi, điều này có nghĩa là nó sẽ tính toán lại mỗi lần trang tính tính toán lại. Để tạo một hàm biến đổi, hãy thêm một dấu than (!) làm ký tự cuối trong đối số kiểu văn bản.

Ví dụ: trong Microsoft Excel dùng cho Windows, công thức của trang tính sau đây sẽ tính toán lại mỗi lần trang tính tính toán lại:

CALL("Kernel32";"GetTickCount";"J!")

Đầu Trang

Thay đổi tại Chỗ — Các Hàm được Khai báo dưới dạng Rỗng

Bạn có thể dùng chữ số đơn n cho mã kiểu trả về trong kiểu văn bản, trong đó n là một số từ 1 đến 9. Khai báo này sẽ lệnh cho Microsoft Excel thay đổi biến tại vị trí được đối số thứ n trỏ tới trong kiểu văn bản, thay vì trả về một giá trị. Khai báo này còn được gọi là thay đổi tại chỗ. Đối số thứ n phải là một kiểu dữ liệu truyền theo tham chiếu (C, D, E, F, G, K, L, M, N, O, P hoặc R). Hàm DLL hoặc nguồn mã cũng phải được khai báo bằng từ khóa rỗng trong ngôn ngữ C (hoặc từ khóa thủ tục trong ngôn ngữ Pascal).

Ví dụ: một hàm DLL nhận một chuỗi kết thúc bằng giá trị null và hai con trỏ trỏ tới các số nguyên làm các đối số có thể thay đổi chuỗi tại chỗ. Dùng "1FMM" làm đối số kiểu văn bản và khai báo hàm là rỗng.

Các phiên bản trước Microsoft Excel 4.0 đã dùng ký tự > để thay đổi tại chỗ đối số đầu tiên; không có cách nào để thay đổi mọi đối số ngoài đối số đầu tiên. Ký tự > tương đương với n = 1 trong phiên bản Microsoft Excel 4.0 và các phiên bản sau đó.

Đầu Trang

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.