Nhập dữ liệu VBA excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

gakon001

Thành viên mới
Tham gia
24/9/11
Bài viết
34
Được thích
1
Trong đoạn code sau:

For i=1 to n
Range(“A” & i) = 1 + i
Next i

Gán giá trị cột A dòng thứ i = 1+ i
Vậy làm sao để gán tự động lần lượt giá trị cho 1 dòng cố định và cột thay đổi, dùng hàm tương tự như trên.Trong đoạn code sau:

For i=1 to n
Range(“A” & i) = 1 + i
Next i

Gán giá trị cột A dòng thứ i = 1+ i
Vậy làm sao để gán tự động lần lượt giá trị cho 1 dòng cố định và cột thay đổi, dùng hàm tương tự như trên? (Cột là biến?!)
tks mọi người nhiều
 
Trong đoạn code sau:

For i=1 to n
Range(“A” & i) = 1 + i
Next i

Gán giá trị cột A dòng thứ i = 1+ i
Vậy làm sao để gán tự động lần lượt giá trị cho 1 dòng cố định và cột thay đổi, dùng hàm tương tự như trên.Trong đoạn code sau:

For i=1 to n
Range(“A” & i) = 1 + i
Next i

Gán giá trị cột A dòng thứ i = 1+ i
Vậy làm sao để gán tự động lần lượt giá trị cho 1 dòng cố định và cột thay đổi, dùng hàm tương tự như trên? (Cột là biến?!)
tks mọi người nhiều
thì dùng offset thôi:

For i=1 to n
Range("A1").Offset(, i) = 1 + i
Next i
 
Upvote 0
Trong đoạn code sau:

For i=1 to n
Range(“A” & i) = 1 + i
Next i

Gán giá trị cột A dòng thứ i = 1+ i
Vậy làm sao để gán tự động lần lượt giá trị cho 1 dòng cố định và cột thay đổi, dùng hàm tương tự như trên.Trong đoạn code sau:
Ví dụ nhỏ để bạn dễ hiểu:
PHP:
Sub Test()
  Dim i As Long
  For i = 1 To 10
    Range("A1").Offset(, i - 1) = 1 + i
  Next i
End Sub
 
Upvote 0
Đối với Excel 2003 chỉ cần dim i as byte được òy heheheh, bởi có 256 cột à, cho nên max i = 255 là ổn òy!
 
Upvote 0
Đối với Excel 2003 chỉ cần dim i as byte được òy heheheh, bởi có 256 cột à, cho nên max i = 255 là ổn òy!
Cái này thì... tầm bậy!
Luôn nhớ thuộc lòng quy tắc này: Với những biến thuộc Byte, Integer... ta luôn khai báo thành biến Long
Lý do: Trong quá trình xử lý, dù có khai báo là Byte hay Integer thì Windows cũng sẽ biến chúng thành biến Long trước khi tính toán ---> Vậy Biến Long nhanh hơn tất cả những biến cùng loại
(từ lúc biết dùng VBA đến giờ, tôi chưa bao giờ xài Byte hay Integer...)
 
Lần chỉnh sửa cuối:
Upvote 0
Cái này thì... tầm bậy!
Luôn nhớ thuộc lòng quy tắc này: Với những biến thuộc Byte, Integer... ta luôn khai báo thành biến Long
Lý do: Trong quá trình xử lý, dù có khai báo là Byte hay Integer thì Windows cũng sẽ biến chúng thành biến Long trước khi tính toán ---> Vậy Biến Long nhanh hơn tất cả những biến cùng loại
(từ lúc biết dùng VBA đến giờ, tôi chưa bao giờ xài Byte hay Integer...)

Em thì không biết vụ này, nhưng cái gì chứng minh cho lời Thầy nói là đúng? Vả lại, nếu chúng đều trở thành Long thì phát sinh ra kiểu biến Byte và Integer để làm gì nhỉ?

Hỏi để học thêm kinh nghiệm, mong Thầy đừng trách.
 
Upvote 0
Em thì không biết vụ này, nhưng cái gì chứng minh cho lời Thầy nói là đúng? Vả lại, nếu chúng đều trở thành Long thì phát sinh ra kiểu biến Byte và Integer để làm gì nhỉ?

Hỏi để học thêm kinh nghiệm, mong Thầy đừng trách.
Ẹc... Ẹc... Ông Bill ổng nói vậy!
Vụ này tưởng chú biết rồi chứ ---> Đã bàn trên GPE nhiều lần rồi mà... Chẳng hạn chổ này:
http://www.giaiphapexcel.com/forum/showthread.php?13255-Biến-integer-biến-long-cái-nào-nhanh-hơn&
 
Upvote 0
Ẹc... Ẹc... Ông Bill ổng nói vậy!
Vụ này tưởng chú biết rồi chứ ---> Đã bàn trên GPE nhiều lần rồi mà... Chẳng hạn chổ này:
http://www.giaiphapexcel.com/forum/showthread.php?13255-Biến-integer-biến-long-cái-nào-nhanh-hơn&

Trời, nào giờ tưởng là tính từ nhỏ tới lớn nên phải cân nhắc, so sánh chứ! Vậy thì kể từ bây giờ, ta cứ quên cái Byte và Integer trong vấn đề xử lý là Number.

Cám ơn Thầy.
 
Upvote 0
Trời, nào giờ tưởng là tính từ nhỏ tới lớn nên phải cân nhắc, so sánh chứ! Vậy thì kể từ bây giờ, ta cứ quên cái Byte và Integer trong vấn đề xử lý là Number.

Cám ơn Thầy.
Không phải là QUÊN luôn mà nên cân nhắc... Một số trường hợp đặc biệt đương nhiên vẫn phải dùng Byte (nếu không thì người ta tạo ra nó làm quái gì) nhưng nói chung nên tập thói quen dùng Long trong đa số trường hợp
 
Upvote 0
nhờ thầy Ndu xem làm sau sử dụng VBA cho file e gửi kèm,mỗi lần nhập thì các dòng Sheet2 tự xuống dòng, việc này nhằm ứng dụng cho nhiều cv khác,e cám ơn thầy.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
nhờ thầy Ndu xem làm sau sử dụng VBA cho file e gửi kèm,mỗi lần nhập thì các dòng Sheet2 tự xuống dòng, việc này nhằm ứng dụng cho nhiều cv khác,e cám ơn thầy.
Cụ thể là bạn muốn gì nhỉ? Có phải là bạn muốn nhập dữ liệu trên sheet1, khi đủ 3 số cho 3 hàng 3, 4, 5 thì dữ liệu tự động nhảy qua sheet2 và gán trên hàng tiếp theo trong danh sách không? Mơ hồ quá!}}\""":::":\===\.
 
Upvote 0
Vâng đúng vậy, Sheet2 mình xem như danh mục từng dòng. nhờ a xem
 
Upvote 0
Vâng đúng vậy, Sheet2 mình xem như danh mục từng dòng. nhờ a xem
Vậy tại sao trên sheet1, bạn không nhập dữ liệu trên 1 cột cho tiện mà phải nhập theo đường chéo làm chi cho cực vậy. Nếu chỉ trên một cột thì dễ dàng rồi.
 
Upvote 0
à không, vì số liệu mình làm phải nhập cho nhiều cột, nên min2nh muốn có được hình tượng để phát triển thêm cv mình đang làm,bạn hường dẫn mình. rất hữu ích cho mình. xin cám ơn bạn trước,bạn có thể làm 2 trường hợp cùng cột và khác cột dùm mình được không vậy?
 
Upvote 0
à không, vì số liệu mình làm phải nhập cho nhiều cột, nên min2nh muốn có được hình tượng để phát triển thêm cv mình đang làm,bạn hường dẫn mình. rất hữu ích cho mình. xin cám ơn bạn trước,bạn có thể làm 2 trường hợp cùng cột và khác cột dùm mình được không vậy?
Nếu dữ liệu chỉ nhập trên các ô B3:B5 của Sheet1 thì bạn có thể sử dụng code sau cho Sheet1:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B3:B5]) Is Nothing Then Exit Sub
    With WorksheetFunction
        If .Count([B3:B5]) = 3 Then
            Sheet2.[A65536].End(xlUp).Offset(1).Resize(, 3).Value = .Transpose([B3:B5])
            [B3:B5].ClearContents
            [B3].Select
        End If
    End With
End Sub
Còn nếu dữ liệu nhập rời rạc trên nhiều cột thì liệu có quy luật gì cho việc nhập này không vậy bạn? Chẳng hạn như chỉ nhập trên những cột nào (trong phạm vi 3 hàng 3:5), phải nhập theo đường chéo hay vị trí ngẫu nhiên? Có lẽ trường hợp này phải dùng đến vòng lặp hoặc phương thức Find để tìm ra ô chứa dữ liệu. Nói chung là mình đang chờ bạn mô tả chi tiết hơn về trường hợp này.
 
Lần chỉnh sửa cuối:
Upvote 0
Theo ngẫu nhiên do mình đặt ô Sheet1 trước, vì ở VD mình minh họa dễ thấy vậy,vì khi đó mình không phụ thuôc vào 1 cột. Mình không biết nói sau, quá tuyệt vời, được anh em diễn đàn diều dắt vậy mình rất muốn học hỏi kiến thức của diễn đàn. Xin cám ơn diễn đàn.Công việc mình sẽ nhẹ nhàng hơn.
 
Upvote 0
Theo ngẫu nhiên do mình đặt ô Sheet1 trước, vì ở VD mình minh họa dễ thấy vậy,vì khi đó mình không phụ thuôc vào 1 cột. Mình không biết nói sau, quá tuyệt vời, được anh em diễn đàn diều dắt vậy mình rất muốn học hỏi kiến thức của diễn đàn. Xin cám ơn diễn đàn.Công việc mình sẽ nhẹ nhàng hơn.
Và đây là code cho trường hợp nhập dữ liệu vào ô bất kỳ trong vùng B3:D5. Bạn có thể tùy chỉnh nếu muốn mở rộng vùng nhập liệu.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B3:D5]) Is Nothing Or Target.Count > 1 Then Exit Sub
    With WorksheetFunction
        If .Count(Intersect(Target.EntireRow, [B:D])) > 1 Then
            MsgBox "Chi nhap 1 vi tri cho moi hang"
            Target.ClearContents
        ElseIf .Count([B3:D5]) = 3 Then
            With Sheet2.[A65536].End(xlUp)
                .Offset(1).Value = [B3:D3].Find("*").Value
                .Offset(1, 1).Value = [B4:D4].Find("*").Value
                .Offset(1, 2).Value = [B5:D5].Find("*").Value
            End With
            [B3:D5].ClearContents
            [B3].Select
        End If
    End With
End Sub
 
Upvote 0
Gâ`n tuâ`n nay cv bận qua´ nên không thanks.mi`nh ca´m ơn bạn chỉ dâ~n.
 
Upvote 0
Web KT

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

Back
Top Bottom