Kiểu dữ liệu chuỗi VBA (Biến mờ)

Loại biến chuỗi

Kiểu dữ liệu chuỗi là một trong những kiểu dữ liệu phổ biến nhất trong VBA. Nó lưu trữ "chuỗi" văn bản.

Để khai báo một biến Chuỗi, bạn sử dụng Câu lệnh Dim (viết tắt của Dimension):

1 Dim strName dưới dạng chuỗi

Để gán giá trị cho một biến, bạn sử dụng dấu bằng:

1 strName = "Fred Smith"

Đặt điều này trong một thủ tục trông giống như sau:

12345678 Sub strExample ()'khai báo chuỗiDim strName dưới dạng chuỗi'điền chuỗistrName = "Fred Smith"'hiển thị hộp tin nhắnMsgBox strnameKết thúc Sub

Nếu bạn chạy đoạn mã trên, hộp thông báo sau sẽ được hiển thị.

Biến chuỗi cố định

Thực tế có 2 loại biến chuỗi - cố định và biến.

Biến chuỗi "biến" (được hiển thị trong ví dụ trước) cho phép chuỗi của bạn có độ dài bất kỳ. Điều này là phổ biến nhất.

Biến chuỗi "cố định" xác định kích thước của chuỗi. Một chuỗi cố định có thể chứa tối đa 65.400 ký tự.

1 Dim strName dưới dạng chuỗi * 20

Khi bạn xác định một biến cố định, số lượng ký tự trong biến sẽ bị khóa tại chỗ, ngay cả khi bạn sử dụng ít ký tự hơn.

Lưu ý khoảng trống trong hình bên dưới - biến có các giá trị giữ chỗ cho phần còn lại của các ký tự trong chuỗi vì ‘Fred Smith’ ít hơn 20 ký tự.

Tuy nhiên, nếu bạn đã khai báo một chuỗi mà không chỉ định độ dài, thì chuỗi đó sẽ chỉ chứa bao nhiêu ký tự được truyền cho nó.

Khai báo biến chuỗi ở cấp mô-đun hoặc cấp toàn cầu

Trong ví dụ trước, bạn đã khai báo biến Chuỗi trong một thủ tục. Các biến được khai báo với một thủ tục chỉ có thể được sử dụng trong thủ tục đó.

Thay vào đó, bạn có thể khai báo các biến Chuỗi ở cấp độ mô-đun hoặc toàn cục.

Cấp độ mô-đun

Cấp mô-đun các biến được khai báo ở đầu mô-đun mã với Lờ mờ tuyên bố.

Các biến này có thể được sử dụng với bất kỳ thủ tục nào trong mô-đun mã đó.

Cấp độ toàn cầu

Cấp độ toàn cầu các biến cũng được khai báo ở đầu mô-đun mã. Tuy nhiên, thay vì sử dụng Lờ mờ tuyên bố, bạn sử dụng Công cộng để chỉ ra rằng biến chuỗi có sẵn để được sử dụng trong suốt Dự án VBA của bạn.

1 StrName công khai dưới dạng chuỗi

Nếu bạn đã khai báo biến chuỗi ở cấp độ mô-đun và được sử dụng trong một mô-đun khác, sẽ xảy ra lỗi.

Tuy nhiên, nếu bạn sử dụng từ khóa Public để khai báo biến chuỗi, lỗi sẽ không xảy ra và thủ tục sẽ chạy hoàn hảo.

Chuyển đổi các giá trị được lưu trữ dưới dạng chuỗi

Có thể đôi khi bạn có các giá trị trong Excel được lưu trữ dưới dạng văn bản - ví dụ: bạn có thể đã nhập tệp CSV có thể đã đưa vào văn bản thay vì số.

Lưu ý rằng giá trị trong A1 được căn trái, biểu thị một giá trị văn bản.

Bạn có thể sử dụng một Hàm VBA có thể được sử dụng để chuyển những số này thành văn bản

12345678 Sub ConvertValue ()'điền chuỗistrQty = Phạm vi ("A1")'điền đôi với chuỗidblQty = strQty'điền phạm vi với sốPhạm vi ("A1") = dblQtyKết thúc Sub

Sau khi bạn chạy mã, số sẽ di chuyển sang bên phải cho biết rằng nó hiện được lưu trữ dưới dạng số.

Điều này đặc biệt hữu ích khi bạn lặp qua một phạm vi ô lớn.

123456789101112131415 Sub ConvertValue ()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'đếm các hàng để chuyển đổirw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'lặp qua các ô và chuyển đổi từng ô thành một sốĐối với i = 0 Đến rw - 1'điền chuỗistrQty = Phạm vi ("A1"). Khoảng cách (i, 0)'điền đôi với chuỗidblQty = strQty'điền phạm vi với sốPhạm vi ("A1"). Offset (i, 0) = dblQtyTiếp theo tôiKết thúc Sub

Kết quả sẽ là tất cả các ô sau đó được chuyển đổi thành số

Bạn mệt mỏi với việc tìm kiếm ví dụ về mã VBA? Hãy thử AutoMacro!

Chuyển đổi chuỗi được lưu trữ dưới dạng giá trị

Tương tự, có thể có các giá trị mà bạn cần chuyển đổi từ một chuỗi thành một giá trị - ví dụ: nếu bạn yêu cầu số 0 ở đầu trên một số điện thoại.

123456789101112131415 Sub ConvertString ()Dim strPhone As String, dblPhone As DoubleDim rw As Integer, i As Integer'đếm các hàng để chuyển đổirw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'lặp qua các ô và chuyển đổi từng ô thành một sốĐối với i = 0 Đến rw - 1'điền chuỗidblPhone = Range ("A1"). Offset (i, 0)'điền đôi với chuỗistrPhone = "'0" & dblPhone'điền phạm vi với sốPhạm vi ("A1"). Offset (i, 0) = strphoneTiếp theo tôiKết thúc Sub

Lưu ý rằng bạn cần bắt đầu chuỗi văn bản bằng dấu nháy đơn (‘), trước số 0 để yêu cầu Excel nhập giá trị dưới dạng chuỗi.

wave wave wave wave wave