Cách nối đuôi biến trong vba

Liên hệ QC

sacalataba127

Thành viên hoạt động
Tham gia
6/4/16
Bài viết
148
Được thích
12
Giới tính
Nam
Dạ em có công thức cần nối đuôi biến cho thuận tiện,
Nhưng không biết viết cú pháp thế nào cho đúng, và cũng không biết VBa có hổ trợ không
Em viết lên đây nhờ mọi người chỉ giùm ạ

Dim i as interger
Dim viTriThu1, vitriThu2,vitriThu3 as String
viTriThu1= "I "
viTriThu2= "love "
viTriThu3= "you "

For i = 1 To 3
Cells(1, i).Value = viTriThu & i 'Lỗi chỗ này ạ
Next i
 
Thử trãi nghiệm với con macro này xem sao:
PHP:
Sub GPE()
Dim I As Integer
Dim Tu01 As String, Tu02 As String, Tu03 As String, Cau As String, Tu00 As String
Tu01 = "I "
Tu02 = "love "
Tu03 = "you!"

For I = 1 To 3
    Tu00 = Choose(I, Tu01, Tu02, Tu03, "GPE.COM")
    Cau = Cau & Tu00
Next I
[B2].Value = Cau
End Sub
 
Thử trãi nghiệm với con macro này xem sao:
PHP:
Sub GPE()
Dim I As Integer
Dim Tu01 As String, Tu02 As String, Tu03 As String, Cau As String, Tu00 As String
Tu01 = "I "
Tu02 = "love "
Tu03 = "you!"

For I = 1 To 3
    Tu00 = Choose(I, Tu01, Tu02, Tu03, "GPE.COM")
    Cau = Cau & Tu00
Next I
[B2].Value = Cau
End Sub
Ý em là Kết quả mong muốn như thế này ạ.
 

File đính kèm

  • Vidu.PNG
    Vidu.PNG
    3.4 KB · Đọc: 12
Mã:
Sub GPE_()
Dim I As Integer
Dim Tu01 As String, Tu02 As String, Tu03 As String, Tu00 As String
Tu01 = "I ":                                    Tu02 = "love "
Tu03 = "you "

For I = 1 To 3
    Tu00 = Choose(I, Tu01, Tu02, Tu03, "GPE.COM")
    Cells(I + 2, "B").Value = Tu00
Next I
End Sub
 
Mã:
Sub GPE_()
Dim I As Integer
Dim Tu01 As String, Tu02 As String, Tu03 As String, Tu00 As String
Tu01 = "I ":                                    Tu02 = "love "
Tu03 = "you "

For I = 1 To 3
    Tu00 = Choose(I, Tu01, Tu02, Tu03, "GPE.COM")
    Cells(I + 2, "B").Value = Tu00
Next I
End Sub
Dạ cho em hỏi thêm
1. Nếu dữ liệu tu01.... đến 1000 dữ liệu thì làm thế nào ạ
2. "GPE.COM" ý nghĩa gì trong câu lệnh này ạ
Em cảm ơn Bác nhiều
 
Hàm Choose() mình chỉ xài tới 29 trường hợp mà thôi;
Cỡ trên 100 thì mình xài hàm SWItch() (trong VBA luôn đó nha)
Còn cỡ ngàn từ thì không thấy phía cuối đường hầm đâu bạn!
 
Lần chỉnh sửa cuối:
Hàm Choose() chỉ chp phép 29 trường hợp mà thôi;
Cỡ trên 100 thì mình xài hàm SWItch() (trong VBA luôn đó nha)
Còn cỡ ngàn từ thì không thấy phía cuối đường hầm đâu bạn!
Vâng ạ, em cảm ơn những thông tin Bác vừa cung cấp ạ
Chúc Bác buổi tối an lành
Em cảm ơn
 
Dạ em có công thức cần nối đuôi biến cho thuận tiện,
Nhưng không biết viết cú pháp thế nào cho đúng, và cũng không biết VBa có hổ trợ không
VBA không có cú pháp nào để nối đuôi biến cả. Và rất hiếm ngôn ngữ hiện đại nào cho phép chuyện đó.

Riêng trường hợp của bạn, vì cái phần đuôi nối vào là số cho nên bạ có thể uyển chuyển dùng mảng (array) để thực hiện.
Nếu bạn đặt viTriThu là một mảng thì:
viTriThu(1), viTriThu(2), viTriThu(3) có thể thay thế viTriThu1, vitriThu2,vitriThu3
Và khi ấy Cells(1, i).Value = viTriThu(i) có thể thay thế Cells(1, i).Value = viTriThu & i

Chú thích: người viết bài chỉ dẫn ở #2 và #4 đặt giả thuyết là phần nối đuôi có thể là chuỗi, không phải số. Trường hợp ấy, mảng không làm được.

...
For i = 1 To 3
Cells(1, i).Value = "cái gì đó"
Next i
Code này chép ra ô A1, B1, C1. Tức là chép ngang chứ không phải chép dọc như trong hình yêu cầu ở bài #3
 
Chú thích: người viết bài chỉ dẫn ở #2 và #4 đặt giả thuyết là phần nối đuôi có thể là chuỗi, không phải số. Trường hợp ấy, mảng không làm được.
Tôi không hiểu ý chỗ này. Muốn cho vào mảng như người ta thì được thôi.
Mã:
Sub GPE_()
Dim I As Integer
Dim TuA As String, TuB As String, TuC As String, TuD As String, TuE As String
Dim TuF As String, TuG As String, TuH As String, TuI As String, viTriThu
    TuA = "I "
    TuB = "love "
    TuC = "you "
    TuD = "I "
    TuE = "want "
    TuF = "you "
    TuG = "I "
    TuH = "need "
    TuI = "you "
    viTriThu = Array(TuA, TuB, TuC, TuD, TuE, TuF, TuG, TuH, TuI)
    For I = LBound(viTriThu) To UBound(viTriThu)
        Cells(I + 3, "B").Value = viTriThu(I)
    Next I
End Sub
Đấy là nói về biến. Còn không code chỉ có nhiêu thôi
Mã:
Sub GPE_()
Dim I As Integer
Dim viTriThu
    viTriThu = Array("I ", "love ", "you ", "I ", "want ", "you ", "I ", "need ", "you ")
    For I = LBound(viTriThu) To UBound(viTriThu)
        Cells(I + 3, "B").Value = viTriThu(I)
    Next I
End Sub
Thực ra bài này là người ta tò mò thôi, chứ trong thực tế không có chuyện họ thao tác với 1000 từ. Chả nhẽ người ta khai báo 1000 biến, viết 1000 dòng code với 1000 tên biến ở bên trái, và 1000 từ ở bên phải dấu =. Sau đó viết 1000 tên biến trong "cái gì đó giống" choose, chỉ với mục đích sau đó đập xuống sheet? Đằng nào cũng phải gõ 1000 từ. Vậy thì gõ trực tiếp trên sheet sẽ nhanh và đỡ nhọc gấp 4 lần.
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom