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
Code trong file bạn làm thiếu thốn đủ thử, do là bản chế lại nên nó thế. cái dim i as long là phải có. Do sự thiếu thốn đó mà cứ sửa hết lỗi này thì lỗi mới lại xuất hiện. Cụ thể là cái ChenMaDonGia cũng không có trong code. Tìm trong file gốc xem có cái ChenMaDonGia không thì copy nó vào là được, nhưng chắc chắn là lại xuất hiện các lỗi mới. NÓi cung là còn dài dài.
Mình đã làm được nút "chen" rồi, cám ơn bạn.
Do mình có code và file frm + trình độ con gà, nữa nên 3 nút đó mình chưa làm được (TxtMDG,CheckCmdThem,LblTongSo ..... đều chưa định nghịa nghĩa)
 

File đính kèm

  • FormDonGia.xls
    47 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Code trong file bạn làm thiếu thốn đủ thử, do là bản chế lại nên nó thế. cái dim i as long là phải có. Do sự thiếu thốn đó mà cứ sửa hết lỗi này thì lỗi mới lại xuất hiện. Cụ thể là cái ChenMaDonGia cũng không có trong code. Tìm trong file gốc xem có cái ChenMaDonGia không thì copy nó vào là được, nhưng chắc chắn là lại xuất hiện các lỗi mới. NÓi cung là còn dài dài.

TxtMDG,CheckCmdThem,LblTongSo ..... đều chưa định nghịa nghĩa. Vào menu debug , rồi click vào cái đầu tiên để xem thêm những cái chưa định nghĩa và định nghĩa cho nó.
Mình đã làm được nút "chen" rồi, cám ơn bạn.
Do mình có code và file frm + trình độ con gà, nữa nên 3 nút đó mình chưa làm được (TxtMDG,CheckCmdThem,LblTongSo ..... đều chưa định nghịa nghĩa)[/QUOTE]
 
Upvote 0
Upvote 0
Private Sub CheckCmdThem()
If TxtMDG.Text <> "" And TxtTenCV.Text <> "" And TxtDVT.Text <> "" _
And TxtMaDM.Text <> "" And (TxtVL.Text <> "" Or TxtNC.Text <> "" Or TxtMay.Text <> "") Then
CmdThem.Enabled = True
Else
CmdThem.Enabled = False
End If
End Sub


Cái này là textbox, đổi tên nó như listbox là được.
Đoạn code này nghĩa là gì vậy bạn?
Private Sub OnOffTxt(Ebl As Boolean)
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.TabIndex >= 3 And Ctl.TabIndex <= 8 Then
Ctl.Enabled = Ebl
End If
Next
End Sub
 
Upvote 0
Đoạn code này nghĩa là gì vậy bạn?
Private Sub OnOffTxt(Ebl As Boolean)
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.TabIndex >= 3 And Ctl.TabIndex <= 8 Then
Ctl.Enabled = Ebl
End If
Next
End Sub
Đoán là vô hiệu hóa hay cho phép các textbox làm việc. Tìm hiểu cái thuộc tính TabIndex sẽ rõ hơn.
 
Upvote 0
Đoán là vô hiệu hóa hay cho phép các textbox làm việc. Tìm hiểu cái thuộc tính TabIndex sẽ rõ hơn.
Bạn
Đoán là vô hiệu hóa hay cho phép các textbox làm việc. Tìm hiểu cái thuộc tính TabIndex sẽ rõ hơn.
Làm thế nào để chạy được code bắt đầu thủ tục "Public Sub......." vậy bạn?
 
Upvote 0
Ví dụ với đoạn code sau, mình không đưa vào macro được.
Public Sub PhanTichVT(StrSL As String, Rn As Range)
Dim RnDT As Long, RnVT As Long 'Dòng b?t d?u c?a m?ng d? li?u trong b?ng DTCT và b?ng PTVT'
'StrSL là chu?i báo hi?u cho ta bi?t c?n phân tích nh?ng thành ph?n nào'
If StrSL = "" Then Exit Sub 'Không có phân thành ph?n nào du?c ch?n'
Dim MaDinhMuc As String
Sheets("DTCT").Select
RnDT = Rn.Row 'Rn là vùng d? li?u ch?a các công vi?c c?n phân tích trong b?ng DTCT'
Dim StrSelect As String
If InStr(StrSL, "NC") <> 0 And InStr(StrSL, "MAY") <> 0 Then 'Có phân tích nhân công và máy thi công'
StrSelect = " and (DanhMucVatTu.DONVI='Công' or DanhMucVatTu.DONVI='Ca')"
ElseIf InStr(StrSL, "NC") <> 0 And InStr(StrSL, "MAY") = 0 Then 'Ch? phân tích nhân công
StrSelect = " and DanhMucVatTu.DONVI = 'Công'"
ElseIf InStr(StrSL, "NC") = 0 And InStr(StrSL, "MAY") <> 0 Then 'Ch? phân tích máy thi công
StrSelect = " and DanhMucVatTu.DONVI = 'Ca'"
End If
RnVT = 5
While RnDT <= Rn.Rows.Count + Rn.Row - 1
If Cells(RnDT, 1).Value = "" Then
Cells(RnDT, 1).End(xlDown).Select
RnDT = ActiveCell.Row
End If
MaDinhMuc = Cells(RnDT, 3).Value
If MaDinhMuc <> "" Then
Dim KhoiLuongCV As String 'Ð?a ch? ch?a kh?i lu?ng công vi?c'
With Sheets(PTVT)
.Cells(RnVT, 1).Value = Cells(RnDT, 1).Value
.Cells(RnVT, 3).Value = Cells(RnDT, 4).Value
.Cells(RnVT, 4).Value = Cells(RnDT, 5).Value
.Cells(RnVT, 5).Value = Cells(RnDT, 6).Value
End With
KhoiLuongCV = Replace(Cells(RnVT, 5).Address, "$", "")
If DbConDM Is Nothing Then
Set DbConDM = CreateObject("ADODB.Connection")
DbConDM.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\DinhMuc24.mdb"
End If
If RsVT Is Nothing Then Set RsVT = CreateObject("ADODB.RecordSet")
If Cells(RnDT, 2).Value <> "" And FormPhanTichVatTu.ChkVL.Value = True Then 'Checkbox trên form, có th? thay th? b?ng di?u ki?n khác'
'Có s? d?ng v?a'
TruyVanVua MaDinhMuc, Cells(RnDT, 2).Value, KhoiLuongCV
ElseIf FormPhanTichVatTu.ChkVL.Value = True Then
'Khong su dung vua va co phan tich vat lieu'
VatLieuKhac MaDinhMuc, KhoiLuongCV, RnVT
End If
'Truy xuat nhan cong, may'
If FormPhanTichVatTu.ChkNC.Value = True Or FormPhanTichVatTu.ChkMay.Value = True Then
NhanCongMay MaDinhMuc, KhoiLuongCV, RnVT, StrSelect
End If
RnVT = RnVT + 1
End If
With FormPhanTichVatTu.Prg 'Progressbar theo dõi ti?n trình'
If .Value + 1 <= .Max Then .Value = .Value + 1
End With
Cells(RnDT + 1, 1).Select
If Cells(RnDT + 1, 1).Value = "" Then ActiveCell.End(xlDown).Select
RnDT = ActiveCell.Row
Wend
Set RsVT = Nothing
Cells(1, 1).Select
End Sub
Private Sub TruyVanVua(Ma_DM As String, Ma_Vua As String, KLCV As String)
'Cái này có v? chua ?n l?m vì tôi nghi s? có cách s? d?ng câu l?nh SELECT t?i uu hon'
Dim RsDMV As ADODB.Recordset
Set RsDMV = CreateObject("ADODB.RecordSet")
RsDMV.Open "SELECT DinhMucDuToan.MAVT, DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where (DinhMucDuToan.MADM = '" & Ma_DM & _
"') and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT and instr(DanhMucVatTu.TENVT, 'V" & ChrW(7919) & "a')=1", DbConDM, adOpenKeyset, adLockPessimistic
If RsDMV.RecordCount = 0 Then Exit Sub
RsDMV.MoveFirst
While Not RsDMV.EOF
RsVT.Open "Select PhuLucVua.MAVT, DanhMucVatTu.TENVT, DanhMucVatTu.DONVI, ''" & _
",PhuLucVua.KLVT, '' From PhuLucVua, DanhMucVatTu Where (PhuLucVua.MAVUA = '" & _
Ma_Vua & "' ) And PhuLucVua.MAVT = DanhMucVatTu.MAVT", DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount > 0 Then
ChenDuLieu KLCV
VatLieuKhac Ma_DM, KLCV, RnVT
End If
RsDMV.MoveNext
Wend
RsDMV.Close
Set RsDMV = Nothing
End Sub
Private Sub VatLieuKhac(Ma_DM As String, KLCV As String, RnVT As Long)
RsVT.Open "SELECT DinhMucDuToan.MAVT,DanhMucVatTu.TENVT,DanhMucVatTu.DONVI, '', " & _
"DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where DinhMucDuToan.MADM = '" & Ma_DM & _
"' and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT and DanhMucVatTu.DONVI<>'Công' and DanhMucVatTu.DONVI<>'Ca'", DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount = 0 Then RsVT.Close: Exit Sub
ChenDuLieu KLCV
End Sub
Private Sub NhanCongMay(Ma_DM As String, KLCV As String, RnVT As Long, StrNC_MAY As String)
RsVT.Open "SELECT DinhMucDuToan.MAVT,DanhMucVatTu.TENVT,DanhMucVatTu.DONVI, '', " & _
"DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where DinhMucDuToan.MADM = '" & Ma_DM & _
"' and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT " & StrNC_MAY, DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount = 0 Then RsVT.Close: Exit Sub
ChenDuLieu KLCV
End Sub
Private Sub ChenDuLieu(KLCV As String)
Dim I As Integer
I = 1
Sheets(PTVT).Cells(RnVT + 1, 2).CopyFromRecordset RsVT
RsVT.MoveFirst
While Not RsVT.EOF
Sheets(PTVT).Cells(RnVT + I, 7).Value = "=Round(" & KLCV & "*F" & RnVT + I & ",3)"
I = I + 1
RsVT.MoveNext
Wend
RnVT = Sheets(PTVT).Cells(65536, 2).End(xlUp).Row
RsVT.Close
End Sub
 
Upvote 0
Ví dụ với đoạn code sau, mình không đưa vào macro được.
Public Sub PhanTichVT(StrSL As String, Rn As Range)
Dim RnDT As Long, RnVT As Long 'Dòng b?t d?u c?a m?ng d? li?u trong b?ng DTCT và b?ng PTVT'
'StrSL là chu?i báo hi?u cho ta bi?t c?n phân tích nh?ng thành ph?n nào'
If StrSL = "" Then Exit Sub 'Không có phân thành ph?n nào du?c ch?n'
Dim MaDinhMuc As String
Sheets("DTCT").Select
RnDT = Rn.Row 'Rn là vùng d? li?u ch?a các công vi?c c?n phân tích trong b?ng DTCT'
Dim StrSelect As String
If InStr(StrSL, "NC") <> 0 And InStr(StrSL, "MAY") <> 0 Then 'Có phân tích nhân công và máy thi công'
StrSelect = " and (DanhMucVatTu.DONVI='Công' or DanhMucVatTu.DONVI='Ca')"
ElseIf InStr(StrSL, "NC") <> 0 And InStr(StrSL, "MAY") = 0 Then 'Ch? phân tích nhân công
StrSelect = " and DanhMucVatTu.DONVI = 'Công'"
ElseIf InStr(StrSL, "NC") = 0 And InStr(StrSL, "MAY") <> 0 Then 'Ch? phân tích máy thi công
StrSelect = " and DanhMucVatTu.DONVI = 'Ca'"
End If
RnVT = 5
While RnDT <= Rn.Rows.Count + Rn.Row - 1
If Cells(RnDT, 1).Value = "" Then
Cells(RnDT, 1).End(xlDown).Select
RnDT = ActiveCell.Row
End If
MaDinhMuc = Cells(RnDT, 3).Value
If MaDinhMuc <> "" Then
Dim KhoiLuongCV As String 'Ð?a ch? ch?a kh?i lu?ng công vi?c'
With Sheets(PTVT)
.Cells(RnVT, 1).Value = Cells(RnDT, 1).Value
.Cells(RnVT, 3).Value = Cells(RnDT, 4).Value
.Cells(RnVT, 4).Value = Cells(RnDT, 5).Value
.Cells(RnVT, 5).Value = Cells(RnDT, 6).Value
End With
KhoiLuongCV = Replace(Cells(RnVT, 5).Address, "$", "")
If DbConDM Is Nothing Then
Set DbConDM = CreateObject("ADODB.Connection")
DbConDM.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\DinhMuc24.mdb"
End If
If RsVT Is Nothing Then Set RsVT = CreateObject("ADODB.RecordSet")
If Cells(RnDT, 2).Value <> "" And FormPhanTichVatTu.ChkVL.Value = True Then 'Checkbox trên form, có th? thay th? b?ng di?u ki?n khác'
'Có s? d?ng v?a'
TruyVanVua MaDinhMuc, Cells(RnDT, 2).Value, KhoiLuongCV
ElseIf FormPhanTichVatTu.ChkVL.Value = True Then
'Khong su dung vua va co phan tich vat lieu'
VatLieuKhac MaDinhMuc, KhoiLuongCV, RnVT
End If
'Truy xuat nhan cong, may'
If FormPhanTichVatTu.ChkNC.Value = True Or FormPhanTichVatTu.ChkMay.Value = True Then
NhanCongMay MaDinhMuc, KhoiLuongCV, RnVT, StrSelect
End If
RnVT = RnVT + 1
End If
With FormPhanTichVatTu.Prg 'Progressbar theo dõi ti?n trình'
If .Value + 1 <= .Max Then .Value = .Value + 1
End With
Cells(RnDT + 1, 1).Select
If Cells(RnDT + 1, 1).Value = "" Then ActiveCell.End(xlDown).Select
RnDT = ActiveCell.Row
Wend
Set RsVT = Nothing
Cells(1, 1).Select
End Sub
Private Sub TruyVanVua(Ma_DM As String, Ma_Vua As String, KLCV As String)
'Cái này có v? chua ?n l?m vì tôi nghi s? có cách s? d?ng câu l?nh SELECT t?i uu hon'
Dim RsDMV As ADODB.Recordset
Set RsDMV = CreateObject("ADODB.RecordSet")
RsDMV.Open "SELECT DinhMucDuToan.MAVT, DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where (DinhMucDuToan.MADM = '" & Ma_DM & _
"') and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT and instr(DanhMucVatTu.TENVT, 'V" & ChrW(7919) & "a')=1", DbConDM, adOpenKeyset, adLockPessimistic
If RsDMV.RecordCount = 0 Then Exit Sub
RsDMV.MoveFirst
While Not RsDMV.EOF
RsVT.Open "Select PhuLucVua.MAVT, DanhMucVatTu.TENVT, DanhMucVatTu.DONVI, ''" & _
",PhuLucVua.KLVT, '' From PhuLucVua, DanhMucVatTu Where (PhuLucVua.MAVUA = '" & _
Ma_Vua & "' ) And PhuLucVua.MAVT = DanhMucVatTu.MAVT", DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount > 0 Then
ChenDuLieu KLCV
VatLieuKhac Ma_DM, KLCV, RnVT
End If
RsDMV.MoveNext
Wend
RsDMV.Close
Set RsDMV = Nothing
End Sub
Private Sub VatLieuKhac(Ma_DM As String, KLCV As String, RnVT As Long)
RsVT.Open "SELECT DinhMucDuToan.MAVT,DanhMucVatTu.TENVT,DanhMucVatTu.DONVI, '', " & _
"DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where DinhMucDuToan.MADM = '" & Ma_DM & _
"' and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT and DanhMucVatTu.DONVI<>'Công' and DanhMucVatTu.DONVI<>'Ca'", DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount = 0 Then RsVT.Close: Exit Sub
ChenDuLieu KLCV
End Sub
Private Sub NhanCongMay(Ma_DM As String, KLCV As String, RnVT As Long, StrNC_MAY As String)
RsVT.Open "SELECT DinhMucDuToan.MAVT,DanhMucVatTu.TENVT,DanhMucVatTu.DONVI, '', " & _
"DinhMucDuToan.KLVT FROM DinhMucDuToan, DanhMucVatTu Where DinhMucDuToan.MADM = '" & Ma_DM & _
"' and DanhMucVatTu.MAVT=DinhMucDuToan.MAVT " & StrNC_MAY, DbConDM, adOpenKeyset, adLockPessimistic
If RsVT.RecordCount = 0 Then RsVT.Close: Exit Sub
ChenDuLieu KLCV
End Sub
Private Sub ChenDuLieu(KLCV As String)
Dim I As Integer
I = 1
Sheets(PTVT).Cells(RnVT + 1, 2).CopyFromRecordset RsVT
RsVT.MoveFirst
While Not RsVT.EOF
Sheets(PTVT).Cells(RnVT + I, 7).Value = "=Round(" & KLCV & "*F" & RnVT + I & ",3)"
I = I + 1
RsVT.MoveNext
Wend
RnVT = Sheets(PTVT).Cells(65536, 2).End(xlUp).Row
RsVT.Close
End Sub
Mình thấy bạn nên lập một bài viết mới, nêu rõ hoàn cảnh, nhờ các thành viên khôi phục lại cái form hỏng ý cho. Chứ bạn tự làm chắc phải sang năm mới xong, không hiệu quả. Thớt này chỉ rành cho những vấn đề nổi cộm, code bị lỗi bị vướng ở một vài chỗ thì trao đổi ở đây. Của bạn là một vấn đề lớn quá sức.
 
Upvote 0
Mình thấy bạn nên lập một bài viết mới, nêu rõ hoàn cảnh, nhờ các thành viên khôi phục lại cái form hỏng ý cho. Chứ bạn tự làm chắc phải sang năm mới xong, không hiệu quả. Thớt này chỉ rành cho những vấn đề nổi cộm, code bị lỗi bị vướng ở một vài chỗ thì trao đổi ở đây. Của bạn là một vấn đề lớn quá sức.
Cám ơn bạn đã nhắc, phần form đó cũng tương đối rồi.
 
Upvote 0
Làm thế nào để chạy được code bắt đầu thủ tục "Public Sub......." vậy bạn?
Cái phần ngay sau cái từ Sub là phần quan trọng để xác định cách gọi nó thì bạn cắt gọn mất (xem bên dưới)
Chỉ làm được nếu nó khong có tham số bắt buộc
Ví dụ với đoạn code sau, mình không đưa vào macro được.
Public Sub PhanTichVT(StrSL As String, Rn As Range)
Sub này có cái dãy tham đi kế nó cho nên mỗi lần chạy, nó bắt buộc phải nạp đủ đám tham đó (2 tham). Ví dụ:
PhanTichVT "abc", Range("A1")
Tham thứ nhất là một chuỗi (abc). Tham thứ hai là mọt range (A1)
 
Upvote 0
Chào ace
Em có tìm đc 1 đoạn code chia sẻ trên microsoft và e đang cần sử dụng nó.
Mục đích: tìm và thay thế 1 đoạn văn bản trong nhiều file excel trong 1 thư mục cùng lúc.
hiện tại e đang gặp lỗi
1. sau khi load file excel nhưng ko replace được, ko hiện thông báo done
2. không gõ tiếng việt vào ô tìm kiếm và thay thế đc.
(e đã enable editing all file)
Nhờ ace chỉ giúp ạ
Link gốc: https://answers.microsoft.com/en-us...a/deb409ac-8467-4648-a44d-f1dd47b7d45d?auth=1
Mã:
Sub ReplaceInFolder()
    Dim strPath As String
    Dim strFile As String
    Dim wbk As Workbook
    Dim wsh As Worksheet
    Dim strFind As String
    Dim strReplace As String
    strFind = InputBox("Enter text to find")
    If strFind = "" Then
        MsgBox "No find text specified!", vbExclamation
        Exit Sub
    End If
    strReplace = InputBox("Enter replacement text")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            strPath = .SelectedItems(1)
        Else
            MsgBox "No folder selected!", vbExclamation
            Exit Sub
        End If
    End With
    If Right(strPath, 1) <> "\" Then
        strPath = strPath & "\"
    End If
    Application.ScreenUpdating = False
    strFile = Dir(strPath & "*.xls*")
    Do While strFile <> ""
        Set wbk = Workbooks.Open(Filename:=strPath & strFile, AddToMRU:=False)
        For Each wsh In wbk.Worksheets
            wsh.Cells.Replace What:=strFind, Replacement:=strReplace, _
                LookAt:=xlWhole, MatchCase:=False
        Next wsh
        wbk.Close SaveChanges:=True
        strFile = Dir
    Loop
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Chào ace
Em có tìm đc 1 đoạn code chia sẻ trên microsoft và e đang cần sử dụng nó.
Mục đích: tìm và thay thế 1 đoạn văn bản trong nhiều file excel trong 1 thư mục cùng lúc.
hiện tại e đang gặp lỗi
1. sau khi load file excel nhưng ko replace được, ko hiện thông báo done
2. không gõ tiếng việt vào ô tìm kiếm và thay thế đc.
(e đã enable editing all file)
Nhờ ace chỉ giúp ạ
Link gốc: https://answers.microsoft.com/en-us...a/deb409ac-8467-4648-a44d-f1dd47b7d45d?auth=1
Mã:
Sub ReplaceInFolder()
    Dim strPath As String
    Dim strFile As String
    Dim wbk As Workbook
    Dim wsh As Worksheet
    Dim strFind As String
    Dim strReplace As String
    strFind = InputBox("Enter text to find")
    If strFind = "" Then
        MsgBox "No find text specified!", vbExclamation
        Exit Sub
    End If
    strReplace = InputBox("Enter replacement text")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            strPath = .SelectedItems(1)
        Else
            MsgBox "No folder selected!", vbExclamation
            Exit Sub
        End If
    End With
    If Right(strPath, 1) <> "\" Then
        strPath = strPath & "\"
    End If
    Application.ScreenUpdating = False
    strFile = Dir(strPath & "*.xls*")
    Do While strFile <> ""
        Set wbk = Workbooks.Open(Filename:=strPath & strFile, AddToMRU:=False)
        For Each wsh In wbk.Worksheets
            wsh.Cells.Replace What:=strFind, Replacement:=strReplace, _
                LookAt:=xlWhole, MatchCase:=False
        Next wsh
        wbk.Close SaveChanges:=True
        strFile = Dir
    Loop
    Application.ScreenUpdating = True
End Sub
Chổ này nè bạn.
http://www.giaiphapexcel.com/diendan/threads/nhờ-check-macro-find-and-replace-all-file-excel.132629/
 
Upvote 0
Em chào anh, em có rất ít kiến thức về excel, gần đây em có sưu tầm trên mạng được code copy giá trị thành values, nhưng cái code này biến đổi cả những cột và hàng bị filter hoặc hide. Anh có thể sửa cho em để chỉ biến đổi giá trị value vào những dòng visible được không ạ ? Em cám ơn
Sub DisplayedToActual()
'Updateby20131126
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Hoc Excel Online"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For Each Rng In WorkRng
Rng.Value = Rng.Text
Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
If Rng.Viru
Em chào anh, em có rất ít kiến thức về excel, gần đây em có sưu tầm trên mạng được code copy giá trị thành values, nhưng cái code này biến đổi cả những cột và hàng bị filter hoặc hide. Anh có thể sửa cho em để chỉ biến đổi giá trị value vào những dòng visible được không ạ ? Em cám ơn
Sub DisplayedToActual()
'Updateby20131126
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Hoc Excel Online"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For Each Rng In WorkRng
Rng.Value = Rng.Text
Next
Application.ScreenUpdating = True
End Sub
Đọc kiểu code là biết nguồn của KuTools đem về chế lại.

Code này hoạt động bạn chọn một vùng, sau đó nó sẽ copy và gán lại giá trị từng cell trong vùng đó thành dạng Text.
Nên bạn sẽ kiểm tra xem thuộc tính của cell đó có bị Hidden không bằng code

If Rows(Rng.Row).EntireRow.Hidden = False Then
Rng.Value = Rng.Text
End If
 
Upvote 0
If Rng.Viru

Đọc kiểu code là biết nguồn của KuTools đem về chế lại.

Code này hoạt động bạn chọn một vùng, sau đó nó sẽ copy và gán lại giá trị từng cell trong vùng đó thành dạng Text.
Nên bạn sẽ kiểm tra xem thuộc tính của cell đó có bị Hidden không bằng code

If Rows(Rng.Row).EntireRow.Hidden = False Then
Rng.Value = Rng.Text
End If
Anh ơi, copy cái đoạn code của anh vào đâu hả anh. Anh thông cảm, em biết ít kiến thức lắm. Em chỉ biết copy code đã viết sẵn rồi dùng thui
 
Upvote 0
Anh ơi, copy cái đoạn code của anh vào đâu hả anh. Anh thông cảm, em biết ít kiến thức lắm. Em chỉ biết copy code đã viết sẵn rồi dùng thui
Không biết code mà cứ thích dùng code.
Mã:
Sub DisplayedToActual()
'Updateby20131126
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Hoc Excel Online"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rows(Rng.Row).EntireRow.Hidden = False Then
Rng.Value = Rng.Text
End If
Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Không biết code mà cứ thích dùng code.
Mã:
Sub DisplayedToActual()
'Updateby20131126
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Hoc Excel Online"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rows(Rng.Row).EntireRow.Hidden = False Then
Rng.Value = Rng.Text
End If
Next
Application.ScreenUpdating = True
End Sub
Em cám ơn anh. Cho em hỏi ngu thêm câu nữa là, em có sưu tầm đc 2 code để phục vụ công việc ( code này là cái thứ 3 ) em muốn nó thành 1 tool add in (hoặc 3 tool riêng biệt cũng được) trên thanh toolbar để dùng khi cần thì làm như thế nào ạ. Hiện tại cần gì em toàn phải xoá cái cũ đi để thêm cái mới vào
 
Upvote 0
Em cám ơn anh. Cho em hỏi ngu thêm câu nữa là, em có sưu tầm đc 2 code để phục vụ công việc ( code này là cái thứ 3 ) em muốn nó thành 1 tool add in (hoặc 3 tool riêng biệt cũng được) trên thanh toolbar để dùng khi cần thì làm như thế nào ạ. Hiện tại cần gì em toàn phải xoá cái cũ đi để thêm cái mới vào
Cần lên khung search và gõ tool addin bạn :)
 
Upvote 0
Em cám ơn anh. Cho em hỏi ngu thêm câu nữa là, em có sưu tầm đc 2 code để phục vụ công việc ( code này là cái thứ 3 ) em muốn nó thành 1 tool add in (hoặc 3 tool riêng biệt cũng được) trên thanh toolbar để dùng khi cần thì làm như thế nào ạ. Hiện tại cần gì em toàn phải xoá cái cũ đi để thêm cái mới vào
Nếu bạn muốn lưu làm công cụ để tiện thao tác bạn lưu file tên là.XLSA
http://www.giaiphapexcel.com/dienda...ạo-nạp-và-sử-dụng-add-ins-trong-ms-excel.379/
Bạn xem cái này thử !
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom