Chuyên mục xử lý, gỡ rối code VBA (3 người xem)

Liên hệ QC

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

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,957

File đính kèm

Upvote 0
dạ em cám ơn ah! thật rất hay ah! thế mà em lại ko nghĩ ra cách này. Thật hay.
 
Upvote 0
Xin các anh/chị giúp đỡ ạ.

Em có tham khảo 1 số nguồn và làm được form Booking như file đính kèm ở dưới.

1.Các anh/chị có thể giú em code khi gõ số điện thoại vào textbox "timkiem" thì những thông tin liên quan sẽ hiện lên listbox hoặc sẽ chuyển tới dòng đó được không ạ. Em có tham khảo code của bác ndu96081631 nhưng chỉ dừng lại tìm kiếm ở số phiếu.
2. Trong sơ đồ giường nằm, em có tạo 1 bảng phụ để tìm thông tin về số ghế và ngày tháng. Liệu có cách nào khác ko ạ. Vì công thức nhiều nên file xử lý hơi lâu.

Mong các anh/chị giúp đỡ. Em xin cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin chào các AC trong diễn đàn

E có file sau, nhờ các AC xem giúp.
- E muốn khi chọn vùng dữ liệu từ D4:D11, rồi ấn DELETE thì dữ liệu cột E sẽ lấy dữ liệu tương ứng bên cột C
- Hiện tại Code nó chỉ chạy cho 1 dòng đầu tiên thôi ạ
- E xin cảm ơn !
 

File đính kèm

Upvote 0
Mình có đoạn code dùng để tra chi phí thẩm định thiết kế nguồn vốn khác:
Hàm Thamdinhthietke3 có 2 đối số là CPXD (chi phí xây dựng) và Loai_cong_trinh (loại công trình)
Nếu loại công trình có giá trị là các số nguyên từ 1 đến 5 tương ứng với 5 loại công trình thì tiến hành nội suy định mức chi phí thẩm định thiết kế theo CPXD, ngược lại lại thì hiện thông báo để người dùng nhập cho đúng.
Mặc dù mình đã khai báo Loai_cong_trinh là Integer và điều kiện phải bằng 1, 2, 3, 4, 5 nhưng nếu nhập không phải là số nguyên thì vẫn cứ ra giá trị.
Xin vui lòng trợ giúp.
Function ThamdinhThietke3(CPXD As Double, Loai_cong_trinh As Integer) 'Tra dinh muc chi phi chung cong trinh DAN DUNG
Dim Ka, Kb, Kc, Ga, Gb As Double
If Loai_cong_trinh = 1 Then
If CPXD <= 15 Then
Kc = 0.099
ElseIf CPXD > 15 And CPXD <= 50 Then
Ga = 15
Gb = 50
Ka = 0.099
Kb = 0.066
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 50 And CPXD <= 100 Then
Ga = 50
Gb = 100
Ka = 0.066
Kb = 0.051
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 100 And CPXD <= 200 Then
Ga = 100
Gb = 200
Ka = 0.051
Kb = 0.039
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 200 And CPXD <= 500 Then
Ga = 200
Gb = 500
Ka = 0.039
Kb = 0.03
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 500 And CPXD <= 1000 Then
Ga = 500
Gb = 1000
Ka = 0.03
Kb = 0.024
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 1000 And CPXD <= 2000 Then
Ga = 1000
Gb = 2000
Ka = 0.024
Kb = 0.017
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 2000 And CPXD <= 5000 Then
Ga = 2000
Gb = 5000
Ka = 0.017
Kb = 0.013
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 5000 And CPXD <= 8000 Then
Ga = 5000
Gb = 8000
Ka = 0.013
Kb = 0.012
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
Else
Kc = 0.012
End If
ThamdinhThietke3 = Kc / 100
ElseIf Loai_cong_trinh = 2 Then
If CPXD <= 15 Then
Kc = 0.114
ElseIf CPXD > 15 And CPXD <= 50 Then
Ga = 15
Gb = 50
Ka = 0.114
Kb = 0.076
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 50 And CPXD <= 100 Then
Ga = 50
Gb = 100
Ka = 0.076
Kb = 0.058
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 100 And CPXD <= 200 Then
Ga = 100
Gb = 200
Ka = 0.058
Kb = 0.045
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 200 And CPXD <= 500 Then
Ga = 200
Gb = 500
Ka = 0.045
Kb = 0.035
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 500 And CPXD <= 1000 Then
Ga = 500
Gb = 1000
Ka = 0.035
Kb = 0.026
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 1000 And CPXD <= 2000 Then
Ga = 1000
Gb = 2000
Ka = 0.026
Kb = 0.021
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 2000 And CPXD <= 5000 Then
Ga = 2000
Gb = 5000
Ka = 0.021
Kb = 0.016
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 5000 And CPXD <= 8000 Then
Ga = 5000
Gb = 8000
Ka = 0.016
Kb = 0.013
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
Else
Kc = 0.013
End If
ThamdinhThietke3 = Kc / 100
ElseIf Loai_cong_trinh = 3 Then
If CPXD <= 15 Then
Kc = 0.065
ElseIf CPXD > 15 And CPXD <= 50 Then
Ga = 15
Gb = 50
Ka = 0.065
Kb = 0.043
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 50 And CPXD <= 100 Then
Ga = 50
Gb = 100
Ka = 0.043
Kb = 0.033
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 100 And CPXD <= 200 Then
Ga = 100
Gb = 200
Ka = 0.033
Kb = 0.026
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 200 And CPXD <= 500 Then
Ga = 200
Gb = 500
Ka = 0.026
Kb = 0.02
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 500 And CPXD <= 1000 Then
Ga = 500
Gb = 1000
Ka = 0.02
Kb = 0.015
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 1000 And CPXD <= 2000 Then
Ga = 1000
Gb = 2000
Ka = 0.015
Kb = 0.012
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 2000 And CPXD <= 5000 Then
Ga = 2000
Gb = 5000
Ka = 0.012
Kb = 0.01
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 5000 And CPXD <= 8000 Then
Ga = 5000
Gb = 8000
Ka = 0.01
Kb = 0.008
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
Else
Kc = 0.008
End If
ThamdinhThietke3 = Kc / 100
ElseIf Loai_cong_trinh = 4 Then
If CPXD <= 15 Then
Kc = 0.072
ElseIf CPXD > 15 And CPXD <= 50 Then
Ga = 15
Gb = 50
Ka = 0.072
Kb = 0.048
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 50 And CPXD <= 100 Then
Ga = 50
Gb = 100
Ka = 0.048
Kb = 0.036
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 100 And CPXD <= 200 Then
Ga = 100
Gb = 200
Ka = 0.036
Kb = 0.029
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 200 And CPXD <= 500 Then
Ga = 200
Gb = 500
Ka = 0.029
Kb = 0.022
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 500 And CPXD <= 1000 Then
Ga = 500
Gb = 1000
Ka = 0.022
Kb = 0.017
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 1000 And CPXD <= 2000 Then
Ga = 1000
Gb = 2000
Ka = 0.017
Kb = 0.014
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 2000 And CPXD <= 5000 Then
Ga = 2000
Gb = 5000
Ka = 0.014
Kb = 0.01
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 5000 And CPXD <= 8000 Then
Ga = 5000
Gb = 8000
Ka = 0.01
Kb = 0.009
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
Else
Kc = 0.009
End If
ThamdinhThietke3 = Kc / 100
ElseIf Loai_cong_trinh = 5 Then
If CPXD <= 15 Then
Kc = 0.076
ElseIf CPXD > 15 And CPXD <= 50 Then
Ga = 15
Gb = 50
Ka = 0.076
Kb = 0.051
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 50 And CPXD <= 100 Then
Ga = 50
Gb = 100
Ka = 0.051
Kb = 0.039
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 100 And CPXD <= 200 Then
Ga = 100
Gb = 200
Ka = 0.039
Kb = 0.03
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 200 And CPXD <= 500 Then
Ga = 200
Gb = 500
Ka = 0.03
Kb = 0.024
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 500 And CPXD <= 1000 Then
Ga = 500
Gb = 1000
Ka = 0.024
Kb = 0.018
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 1000 And CPXD <= 2000 Then
Ga = 1000
Gb = 2000
Ka = 0.018
Kb = 0.016
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 2000 And CPXD <= 5000 Then
Ga = 2000
Gb = 5000
Ka = 0.016
Kb = 0.012
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
ElseIf CPXD > 5000 And CPXD <= 8000 Then
Ga = 5000
Gb = 8000
Ka = 0.012
Kb = 0.01
Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
Else
Kc = 0.01
End If
ThamdinhThietke3 = Kc / 100
Else
MsgBox "Loai cong trinh chua phu hop!" & vbCrLf & vbCrLf _
& "Ban vui long chon Loai_cong_trinh nhu sau:" & vbCrLf _
& "1 = Cong trinh Dan dung" & vbCrLf _
& "2 = Cong trinh Cong nghiep" & vbCrLf _
& "3 = Cong trinh Giao thong" & vbCrLf _
& "4 = Cong trinh Nong nghiep phat trien nong thon" & vbCrLf _
& "5 = Cong trinh Ha tang ky that" & vbCrLf & vbCrLf _
& "Xin cam on!"
End If
End Function
 
Upvote 0
Chào longriver28284,

Bạn thử thêm như sau xem:
Mã:
....
& "Xin cam on!"
[COLOR=#ff0000]Exit Function[/COLOR]
End If
End Function
 
Upvote 0
Vẫn không có gì thay đổi ạ!
Bạn thử như vầy:
Mã:
Function ThamdinhThietke3(CPXD As Double, Loai_cong_trinh [COLOR=#ff0000]As Double[/COLOR]) 'Tra dinh muc chi phi chung cong trinh DAN DUNG
If Loai_cong_trinh Mod 1 > 0 Or Loai_cong_trinh > 5 Then
    MsgBox "Loai cong trinh chua phu hop!" & vbCrLf & vbCrLf _
    & "Ban vui long chon Loai_cong_trinh nhu sau:" & vbCrLf _
    & "1 = Cong trinh Dan dung" & vbCrLf _
    & "2 = Cong trinh Cong nghiep" & vbCrLf _
    & "3 = Cong trinh Giao thong" & vbCrLf _
    & "4 = Cong trinh Nong nghiep phat trien nong thon" & vbCrLf _
    & "5 = Cong trinh Ha tang ky that" & vbCrLf & vbCrLf _
    & "Xin cam on!"
    Exit Function
End If
Dim Ka, Kb, Kc, Ga, Gb As Double
If Loai_cong_trinh = 1 Then
'.......5 truong hop
    Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
    Else
    Kc = 0.01
    End If
    ThamdinhThietke3 = Kc / 100
End If
End Function
 
Upvote 0
Nhờ các bạn xem giúp mình lỗi đoạn code sau. Nếu copy range của từng sheet sang sheet("DSACH") thì có vẻ hơi lâu nên mình dùng value = value nhưng nó ko chạy.

file: https://mediafire.zendesk.com/…/token/Nk80ZRMspX1u50VbQNG…/…


Mình thử bỏ lệnh IF đi thì marco chạy nhưng copy 2 lần, hic


Hoặc có cách nào nhanh hơn copy range từng sheet sang sheet("DSACH") không.

Thanks

Sub COPY ()

P/S: Nhờ chỉ dùm cách gỡ rối khác

Dim SoSheet As Long
SoSheet = ActiveWorkbook.Sheets.Count
For j = 1 To SoSheet
lr_j = Sheets(j).Cells(Rows.Count, 2).End(xlUp).Row
lr = Sheets("DSACH").Cells(Rows.Count, 2).End(xlUp).Row
If ActiveSheet.Name = "DSACH" Or ActiveSheet.Name = "SOLIEU" Then
Else
Sheets("DSACH").Cells(lr + 1, 1).Resize(lr_j, 17).Value = _
Sheets(j).Range("A3").Resize(lr_j, 17).Value
End If
Next j

End Sub

P/S: Nhờ chỉ dùm cách gỡ rối khác với cách

For j = 1 To SoSheet - 1 nhé

- Có cách nào đếm số sheet trong workbooks nhưng loại trừ sheet có tên "DSACH" ko vậy???
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các bạn xem giúp mình lỗi đoạn code sau. Nếu copy range của từng sheet sang sheet("DSACH") thì có vẻ hơi lâu nên mình dùng value = value nhưng nó ko chạy.

file: https://mediafire.zendesk.com/…/token/Nk80ZRMspX1u50VbQNG…/…


Mình thử bỏ lệnh IF đi thì marco chạy nhưng copy 2 lần, hic


Hoặc có cách nào nhanh hơn copy range từng sheet sang sheet("DSACH") không.

Bạn thử đoạn sau:

Mã:
Sub COPY()
Dim lr As Long, er As Long, sh As Worksheet, sh0 As Worksheet, tmp()
Set sh0 = Sheets("DSACH")
sh0.Range("A3:Q65000").ClearContents
For Each sh In ThisWorkbook.Worksheets
    If sh.Name <> sh0.Name Then
        lr = sh.Cells(Rows.Count, 2).End(xlUp).Row
        tmp = sh.Range("B3:Q" & lr).Value
        er = sh0.Cells(Rows.Count, 2).End(xlUp).Row + 1
        sh0.Range("B" & er).Resize(UBound(tmp, 1), UBound(tmp, 2)).Value = tmp
    End If
Next sh
'Dien STT:
sh0.Range("A3:A" & sh0.Cells(Rows.Count, 2).End(xlUp).Row).Value = No(sh0.Range("A3:A" & sh0.Cells(Rows.Count, 2).End(xlUp).Row))
End Sub

Function No(rng As Range) As Variant
If rng.Columns.Count > 1 Then Exit Function
Dim tmp(), i As Long
ReDim tmp(1 To rng.Count, 1 To 1)
For i = 1 To UBound(tmp, 1)
    tmp(i, 1) = i
Next i
No = tmp
End Function
 
Upvote 0
Vẫn không được ạ!
Mục đích của mình là kiểm tra giá trị của Loai_cong_trinh nhập vào:
1. Nếu là số nguyên dương từ 1đến 5 thì thực hiện các lệnh.
2. Không thuộc trường hợp trên thì thoát hàm và hiện thông báo.
Xin vui lòng trợ giúp!
Bạn thử như vầy:
Mã:
Function ThamdinhThietke3(CPXD As Double, Loai_cong_trinh [COLOR=#ff0000]As Double[/COLOR]) 'Tra dinh muc chi phi chung cong trinh DAN DUNG
If Loai_cong_trinh Mod 1 > 0 Or Loai_cong_trinh > 5 Then
    MsgBox "Loai cong trinh chua phu hop!" & vbCrLf & vbCrLf _
    & "Ban vui long chon Loai_cong_trinh nhu sau:" & vbCrLf _
    & "1 = Cong trinh Dan dung" & vbCrLf _
    & "2 = Cong trinh Cong nghiep" & vbCrLf _
    & "3 = Cong trinh Giao thong" & vbCrLf _
    & "4 = Cong trinh Nong nghiep phat trien nong thon" & vbCrLf _
    & "5 = Cong trinh Ha tang ky that" & vbCrLf & vbCrLf _
    & "Xin cam on!"
    Exit Function
End If
Dim Ka, Kb, Kc, Ga, Gb As Double
If Loai_cong_trinh = 1 Then
'.......5 truong hop
    Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
    Else
    Kc = 0.01
    End If
    ThamdinhThietke3 = Kc / 100
End If
End Function
 
Upvote 0
Nhờ các bạn xem giúp mình lỗi đoạn code sau. Nếu copy range của từng sheet sang sheet("DSACH") thì có vẻ hơi lâu nên mình dùng value = value nhưng nó ko chạy.

file: https://mediafire.zendesk.com/…/token/Nk80ZRMspX1u50VbQNG…/…


Mình thử bỏ lệnh IF đi thì marco chạy nhưng copy 2 lần, hic


Hoặc có cách nào nhanh hơn copy range từng sheet sang sheet("DSACH") không.

Thanks

Sub COPY ()

P/S: Nhờ chỉ dùm cách gỡ rối khác

Dim SoSheet As Long
SoSheet = ActiveWorkbook.Sheets.Count
For j = 1 To SoSheet
lr_j = Sheets(j).Cells(Rows.Count, 2).End(xlUp).Row
lr = Sheets("DSACH").Cells(Rows.Count, 2).End(xlUp).Row
If ActiveSheet.Name = "DSACH" Or ActiveSheet.Name = "SOLIEU" Then
Else
Sheets("DSACH").Cells(lr + 1, 1).Resize(lr_j, 17).Value = _
Sheets(j).Range("A3").Resize(lr_j, 17).Value
End If
Next j

End Sub

P/S: Nhờ chỉ dùm cách gỡ rối khác với cách

For j = 1 To SoSheet - 1 nhé

- Có cách nào đếm số sheet trong workbooks nhưng loại trừ sheet có tên "DSACH" ko vậy???
Bạn xem thử file (Mình ứng dụng code của thày Bate)
 

File đính kèm

Upvote 0
Vẫn không được ạ!
Mục đích của mình là kiểm tra giá trị của Loai_cong_trinh nhập vào:
1. Nếu là số nguyên dương từ 1đến 5 thì thực hiện các lệnh.
2. Không thuộc trường hợp trên thì thoát hàm và hiện thông báo.
Xin vui lòng trợ giúp!
Bạn thử lại:
Mã:
Function ThamdinhThietke3(CPXD As Double, Loai_cong_trinh [COLOR=#0000ff]As Byte[/COLOR]) 'Tra dinh muc chi phi chung cong trinh DAN DUNG
If [COLOR=#0000ff]TypeName(Loai_cong_trinh) <> "Integer"[/COLOR] Or Loai_cong_trinh > 5 Then
    MsgBox "Loai cong trinh chua phu hop!" & vbCrLf & vbCrLf _
    & "Ban vui long chon Loai_cong_trinh nhu sau:" & vbCrLf _
    & "1 = Cong trinh Dan dung" & vbCrLf _
    & "2 = Cong trinh Cong nghiep" & vbCrLf _
    & "3 = Cong trinh Giao thong" & vbCrLf _
    & "4 = Cong trinh Nong nghiep phat trien nong thon" & vbCrLf _
    & "5 = Cong trinh Ha tang ky that" & vbCrLf & vbCrLf _
    & "Xin cam on!"
    Exit Function
End If
Dim Ka, Kb, Kc, Ga, Gb As Double
If Loai_cong_trinh = 1 Then
'.......5 truong hop
'    Kc = Kb - (Kb - Ka) * (CPXD - Gb) / (Ga - Gb)
'    Else
'    Kc = 0.01
'    End If
'    ThamdinhThietke3 = Kc / 100
End If
End Function
 
Upvote 0
Dear các anh/chị
Em có 1 case chưa biết xử lý thế nào nhờ các anh/chị tư vấn xử lý MACRO giúp ạ, cụ thể là ntn:
Em có 1 file Excel gồm 1 sheet chứa trường thông tin + 1 sheet biểu mẫu cần xuất ra (Sheet 2 này có hàm link từ Sheet 1 sang sao cho khi đổi giá trị ở ô màu đỏ (C3-sheet2) bằng các giá trị thứ tự từ trên xuống dưới của cột B bên sheet 1 thì sẽ thành 1 nội dung khác --> Sheet này là sheet cần tạo ra).
--> Sản phẩm: Cần mỗi 1 giá trị trong cột B (sheet 1) chạy từ B3 đến hết (B18) sẽ tạo ra 1 sheet mới hoàn toàn theo mẫu của sheet 2 ("BM01") - đặt tên sheet mới này theo mã trong cột B để phân biệt. Có 16 giá trị trong cột B thì xuất ra 16 sheet mới ở workbook.
Nhờ các anh/chị giúp ạ!
http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=168274&d=1478681879
 

File đính kèm

Upvote 0
Xóa nội dung do không trả lời với trích dẫn
 
Lần chỉnh sửa cuối:
Upvote 0
Câu hỏi mới: Nhờ Thầy nào online giúp đỡ giùm em với.

Nhờ Thầy giúp giùm em, thêm code cho hàm diễn giải có hàm round, em muốn xóa chữ "round(" thì Ok, còn đối số cuối của số làm tròn em cắt chưa được), phân cách công thức ở máy em là dấu ;

Đọc trên diễn đàn thấy mã asc số 59, nhưng cũng chưa bắt được cái dấu ; ở cuối hàm round.
Em cảm ơn Thầy
Public Function diengiai(rngData As Range)
Dim strText As String, strText2 As String
Dim i As Long, j As Long, dem As Long
Dim subText() As String, dau() As String
Dim Res As Double
strText = rngData.Formula
For i = 1 To Len(strText)
Select Case Mid(strText, i, 1)
Case "+", "-", "*", "/", "^"
ReDim Preserve dau(j)
dau(j) = Mid(strText, i, 1)
j = j + 1
End Select
Next i
strText = Replace(strText, "=", "")
strText = Replace(strText, ":", "")
strText = Replace(strText, "#", "")
strText = Replace(strText, "{", "(")
strText = Replace(strText, "}", ")")
strText = Replace(strText, "[", "(")
strText = Replace(strText, "]", ")")

strText = Replace(strText, "+", "@")
strText = Replace(strText, "-", "@")
strText = Replace(strText, "*", "@")
strText = Replace(strText, "/", "@")
strText = Replace(strText, "", "@")
strText = Replace(strText, "^", "@")
'strText = Replace(strText, ";", "#")
If Left(strText, 6) = "ROUND(" Then
strText = Replace(strText, "ROUND(", "")
strText = Split(strText, ";")(0)
End If

strText = Trim(strText)
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào mọi người,

Mọi người chỉ giúp em trường hợp này với. Em có bảng tính như sau :
[TABLE="width: 384"]
[TR]
[TD="class: xl64"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[/TR]
[/TABLE]
macro.jpg
Em muốn chọn vùng màu xanh nên viết code như sau :

Range("B2",Range("B1").End(xlDown).End(xlToRight)).Select

Nhưng do trong cột có ô trống nên excel chỉ chọn vùng A1&A2 thôi.

Mọi người chỉ giúp em đoạn code để chọn dc chính xác vùng màu xanh với nhen.

Cám ơn mọi người
 
Upvote 0
Xin chào mọi người,

Mọi người chỉ giúp em trường hợp này với. Em có bảng tính như sau :
[TABLE="width: 384"]
[TR]
[TD="class: xl64"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[TD="class: xl66"][/TD]
[/TR]
[/TABLE]
View attachment 169029
Em muốn chọn vùng màu xanh nên viết code như sau :

Range("B2",Range("B1").End(xlDown).End(xlToRight)).Select

Nhưng do trong cột có ô trống nên excel chỉ chọn vùng A1&A2 thôi.

Mọi người chỉ giúp em đoạn code để chọn dc chính xác vùng màu xanh với nhen.

Cám ơn mọi người
Vậy bạn sửa lại thế này xem sao.
Mã:
Range("B2", Range("F65000").End(xlUp)).Select
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom