Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Có cái nào chỉ giùm đi bạn. Tôi tìm lâu lắm rồi mà chưa có cái nào đúng cả.
Híc. Kèo thơm bị khóa bài rồi anh. :p:p

Còn cái canh lề của bạn hỏi ở trên.
1. Excel có cách nào tự giãn dòng khi đánh văn bản như word: Giãn theo phương đứng hoặc phương ngang.

2. Word tự động căn chỉnh nên các dòng thẳng hàng lề bên phải. Excel lượn lề bên phải như rắn: Theo phương ngang.

Từ 1+2, suy luận cần canh lề theo phương ngang. Excel có Alignment, Horizontal, Justify + Wrap Text.

Ví dụ:
upload_2017-10-18_14-41-43.png
 
Upvote 0
Em có đoạn code sau

.Range("J8").Resize(K, 125)

Làm thế nào để định dạng số cho mảng này. Ví dụ 1000000 thành 1.000.000
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người em đang gặp khó với VBA mong mọi người giúp đỡ với ah!

em muốn làm phần Hyperlink trong cột "File" thì phải làm thế nào ah, em mày mò hoài mà không ra được phần đó.
Em tự mày mò nên cũng chỉ biết hạn chế, mong mọi người giúp đỡ ah
em xin chân thành cảm ơn!
 

File đính kèm

  • cvden 2017.xlsx.xlsm
    22 KB · Đọc: 2
Upvote 0
Chào mọi người. Em có 1 file excel dùng code để in cho nhanh! (file đính kèm)Nhưng mỗi lần in chỉ đc 1 bộ.
Nhờ mọi người chỉ cho em thêm 1 đoạn code để có thể thiết lập in được nhiều bộ với chỉ 1 lần click nút print ( ví dụ in 7 bộ)
Thanks mọi người!
Pass VBA: 123
 

File đính kèm

  • 1.20171009-BBNT THANH THAI - KHOI DE -XayTuong.xlsm
    271.2 KB · Đọc: 2
Upvote 0
PHP:
Dim i As Integer, j As Integer
Dim r1 As Integer, r2 As Integer

HR = Sheets("HR").Range("A8:B" & Range("B" & Rows.Count).End(xlUp).Row).Value
ReDim K_HR(1 To UBound(HR, 1), 1 To 1)
For i = 1 To UBound(HR, 1)
    If HR(i, 1) = 9 Then
        r1 = r1 + 1
        K_HR(r1, 1) = HR(i, 2)
    End If
    MsgBox r1
Next i
If r1 Then
Sheets("Report").Range("R1").Resize(r1, 1) = K_HR
End If
End Sub
Cho em hỏi code này sai ở đâu? Nếu tại sheet HR em chạy thì r1 lần lượt hiện tại msgbox là 1 2 3 và 4. Nhưng nếu chạy tại sheet Report thì kết quả hoàn toàn khác, msgbox lần lượt là 0 0 0 và 1.
 
Upvote 0
PHP:
Dim i As Integer, j As Integer
Dim r1 As Integer, r2 As Integer

HR = Sheets("HR").Range("A8:B" & Range("B" & Rows.Count).End(xlUp).Row).Value
ReDim K_HR(1 To UBound(HR, 1), 1 To 1)
For i = 1 To UBound(HR, 1)
    If HR(i, 1) = 9 Then
        r1 = r1 + 1
        K_HR(r1, 1) = HR(i, 2)
    End If
    MsgBox r1
Next i
If r1 Then
Sheets("Report").Range("R1").Resize(r1, 1) = K_HR
End If
End Sub
Cho em hỏi code này sai ở đâu? Nếu tại sheet HR em chạy thì r1 lần lượt hiện tại msgbox là 1 2 3 và 4. Nhưng nếu chạy tại sheet Report thì kết quả hoàn toàn khác, msgbox lần lượt là 0 0 0 và 1.
HR = Sheets("HR").Range("A8:B" &Sheets("HR"). Range("B" & Rows.Count).End(xlUp).Row).Value
 
Upvote 0
HR = Sheets("HR").Range("A8:B" &Sheets("HR"). Range("B" & Rows.Count).End(xlUp).Row).Value

Chạy ngon lành rồi anh ạ. Nhưng làm thế nào để chuyển cái "dọc" thành cái "ngang" anh? Kết quả đang trả về là một cột nhiều dòng, em muốn thành 1 dòng nhiều cột thì làm như nào ạ?
 
Upvote 0
Chạy ngon lành rồi anh ạ. Nhưng làm thế nào để chuyển cái "dọc" thành cái "ngang" anh? Kết quả đang trả về là một cột nhiều dòng, em muốn thành 1 dòng nhiều cột thì làm như nào ạ?
thử code
Mã:
HR = Sheets("HR").Range("A8:B" &Sheets("HR"). Range("B" & Rows.Count).End(xlUp).Row).Value
ReDim K_HR( 1 To 1, 1 To UBound(HR, 1))
For i = 1 To UBound(HR, 1)
    If HR(i, 1) = 9 Then
        r1 = r1 + 1
        K_HR(1, r1) = HR(i, 2)
    End If
    MsgBox r1
Next i
If r1 Then
Sheets("Report").Range("R1").Resize(, r1) = K_HR
End If
 
Upvote 0
Sub print_td()
Dim p1, p2, i&
p1 = Sheet15.Range("P2").Value
p2 = Sheet15.Range("P3").Value

If IsNumeric(p1) = False Or IsNumeric(p2) = False Then
tb = MsgBox("So code phai la so.", , "Thông báo")
Exit Sub
End If

If p1 > p2 Then
tb = MsgBox("So code sau phai >= so code truoc.", , "Thông báo")
Exit Sub
End If

If p1 < 1 Or p2 < 1 Then
tb = MsgBox("So code phai >= 1.", , "Thông báo")
Exit Sub
End If

If p1 <= p2 Then
For i = p1 To p2
Sheet15.Range("O1").Value = i
Sheet15.PrintOut
Next
End If

End Sub
Cho em xin thêm 1 dòng code để giá trị i lặp lại n lần theo ô "P4" ở sheet15 với ạ!
For i = p1 To p2
Sheet15.Range("O1").Value = i
Sheet15.PrintOut
 
Upvote 0
nói rỏ lại câu:
"Cho em xin thêm 1 dòng code để giá trị i lặp lại n lần theo ô "P4" ở sheet15 với ạ!"
và cho ví vụ cụ thể
Vâng, file excel của em như thế này. Em dùng vba print từ code 1 đến code 7, mỗi lần in chỉ đc 1 bộ. Giờ a có thể chèn giùm em thêm 1 đoạn code vào vba đó để em có thể đánh thêm 1 số là số bộ cần in (ví dụ cần in 7 lần, in từ code 1 đến 7, rồi lặp lại từ 1 đến 7 cho đến khi đủ 7 lần)
 

File đính kèm

  • 1.20171009-BBNT THANH THAI - KHOI DE -XayTuong.xlsm
    271.2 KB · Đọc: 3
Upvote 0
Em mới học vba và tạo được đoạn code . Chạy model "loc_du_lieu" thì không sao, nhưng chạy model "tan_suat_hd" thì excel tự tắt và khởi động lại. Mong mọi người giúp đỡ, gỡ rối giùm em ah. Thanks!
 

File đính kèm

  • HD_PCC_17.xlsm
    793 KB · Đọc: 5
Upvote 0
Vâng, file excel của em như thế này. Em dùng vba print từ code 1 đến code 7, mỗi lần in chỉ đc 1 bộ. Giờ a có thể chèn giùm em thêm 1 đoạn code vào vba đó để em có thể đánh thêm 1 số là số bộ cần in (ví dụ cần in 7 lần, in từ code 1 đến 7, rồi lặp lại từ 1 đến 7 cho đến khi đủ 7 lần)
Lệnh điều khiển máy in mình không rành, dùng tạm code
Mã:
Sub preview_td()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet2.Range("P2").Value
p2 = Sheet2.Range("P3").Value
n = Sheet2.Range("P5").Value 'so bo can in
If IsNumeric(p1) = False Or IsNumeric(p2) = False Or IsNumeric(n) = False Then
  tb = MsgBox("So code va so bo can in phai la so.", , "Thông báo")
  Exit Sub
End If

If p1 > p2 Then
  tb = MsgBox("So code sau phai >= so code truoc.", , "Thông báo")
  Exit Sub
End If

If p1 < 1 Then
  tb = MsgBox("So code phai >= 1.", , "Thông báo")
  Exit Sub
End If

If n < 1 Then
  tb = MsgBox("So bo can in phai >= 1.", , "Thông báo")
  Exit Sub
End If

For i = p1 To p2
  Sheet2.Range("O1").Value = i
  For j = 1 To n
     'Sheet2.PrintOut
     Sheet2.PrintPreview
  Next j
Next

End Sub
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom