Chuyên mục xử lý, gỡ rối code VBA (1 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
Các bạn giúp mình xem đoạn code này sao mình áp dụng vào bảng tính của mình chạy một thời gian nó nặng quá trời luôn

Sub NhapLieu()
'Sao Chep So Lieu
Application.ScreenUpdating = False
Dim i, N, k
Sheets("Design").Select
[N34].Formula = "=Counta(R[2]C[-3]:R[7]C[-3])"
k = Range("N34").Value
For i = 1 To k
Cod = Range("C4").Value
ngay = Range("D5").Value
Mac = Range("A8").Value
LXi = Range("C16").Value
Xi = Range("A30").Value
SA = Range("K17").Value
PP1 = Range("B30").Value
LPP1 = Range("C17").Value
Nuoc = Range("C30").Value
C = Range("D30").Value
M = Range("E30").Value
D1 = Range("F30").Value
D2 = Range("G30").Value
Sheets("Summary").Select
[B2].Formula = "=2*Counta(R[8]C:R[1001]C)-1"
N = Range("B2").Value
Range("A11").Select
ActiveCell.Offset(N, 1).Value = ngay
ActiveCell.Offset(N, 2).Value = Mac
ActiveCell.Offset(N, 5).Value = LXi
ActiveCell.Offset(N, 9).Value = Xi
ActiveCell.Offset(N, 10).Value = PP1
ActiveCell.Offset(N, 11).Value = C
ActiveCell.Offset(N, 12).Value = M
ActiveCell.Offset(N, 13).Value = D1
ActiveCell.Offset(N, 14).Value = D2
ActiveCell.Offset(N, 15).Value = Nuoc
ActiveCell.Offset(N, 16).Value = SA
ActiveCell.Offset(N, 17).Value = Cod
ActiveCell.Offset(N + 1, 10).Value = LPP1
Sheets("Design").Select
Range("A1:M30").Select
Range("A10").Select
Next
Application.ScreenUpdating = True
End Sub

nhờ các bạn giúp mình hiện giờ file của mình lên tới 7,5 G rùi mình cảm ơn nhiều nhiều
 
Upvote 0
nhờ các bạn giúp mình hiện giờ file của mình lên tới 7,5 G rùi mình cảm ơn nhiều nhiều

file bạn 7.5G mà bạn mở lên và chạy được, có nghĩa là máy bạn thuộc dạng khủng rồi đó. nói gì thì nói, gởi file lên đi mọi người xem và giúp cho. Tôi thấy code trên cũng bình thường thôi mà
 
Lần chỉnh sửa cuối:
Upvote 0
file bạn 7.5G mà bạn mở lên và chạy được, có nghĩa là máy bạn thuộc dạng khủng rồi đó. nói gì thì nói, gởi file lên đi mọi người xem và giúp cho. Tôi thấy code trên cũng bình thường thôi mà

minh ghi lộn 7519 Kb thôi. mình gửi filee xóa giữ lệu nhe!
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người!!
Mình có đọc một hướng dẫn về cách gán Add_in lên thanh Menu,mình đã chỉnh sửa đôi chút và đưa vào đó một đoạn mã lệnh để thực hiện Add_in này.tuy nhiên lại không đạt kết quả/

Mọi người ngó giùm mình xem lỗi ở đâu và chỉ mình cách khắc phục với nhé!!!

Cảm ơn nhiều!!!!!!!

Option Private Module
Sub AddMenu()
Dim cMenu1 As CommandBarControl
Dim cbMainMenuBar As CommandBar
Dim iHelpMenu As Integer
Dim cbcCutomMenu As CommandBarControl
Dim cbcSubMenu As CommandBarControl

Set cbMainMenuBar = Application.CommandBars("Worksheet Menu Bar")

iHelpMenu = cbMainMenuBar.Controls("Help").Index

Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup, Before:=iHelpMenu)
cbcCutomMenu.Caption = "Tien ich mo rong"


With cbcSubMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Bo Dau Tieng Viet"
.FaceId = 2109
Function bodau(ByVal sContent As String) As String
Dim i As Long
Dim intCode As Long
Dim sChar As String
Dim sConvert As String
bodau = AscW(sContent)

For i = 1 To Len(sContent)
sChar = Mid(sContent, i, 1)
If sChar <> "" Then
intCode = AscW(sChar)
End If
Select Case intCode
Case 273
sConvert = sConvert & "d"
Case 272
sConvert = sConvert & "D"
Case 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863
sConvert = sConvert & "a"
Case 192, 193, 194, 195, 258, 7840, 7842, 7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862
sConvert = sConvert & "A"
Case 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879
sConvert = sConvert & "e"
Case 200, 201, 202, 7864, 7866, 7868, 7870, 7872, 7874, 7876, 7878
sConvert = sConvert & "E"
Case 236, 237, 297, 7881, 7883
sConvert = sConvert & "i"
Case 204, 205, 296, 7880, 7882
sConvert = sConvert & "I"
Case 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907
sConvert = sConvert & "o"
Case 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
sConvert = sConvert & "O"
Case 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921
sConvert = sConvert & "u"
Case 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920
sConvert = sConvert & "U"
Case 253, 7923, 7925, 7927, 7929
sConvert = sConvert & "y"
Case 221, 7922, 7924, 7926, 7928
sConvert = sConvert & "Y"
Case Else
sConvert = sConvert & sChar
End Select
Next
bodau = sConvert
End Function

End With
 
Upvote 0
Mình đang tập viết một code tổng hợp dữ liệu nhiều file đóng theo Sheet. A,B,C,D vào file tổng hợp Mà gặp rắc rối chưa xử lý được xin úp lên đây nhờ các bạn trợ giúp
xin cảm ơn
PHP:
Sub TongHop_FileDong()
Application.ScreenUpdating = False
Dim FileName, SheetName, Path As String, Chk As Boolean
Dim i As Long, j As Long, Sh As Worksheets, Wb As Workbook
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("A", "B", "C", "D")
For i = 0 To UBound(FileName)
    For Each Wb In Workbooks
        If Wb.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
    With ActiveWorkbook
        For j = 0 To UBound(SheetName, 1)
            With ActiveSheet
                MsgBox SheetName(j)
                ''dang roi khuc nay
                'SheetName = Sh.Range("A2", Sh.[J65536].End(3)).Copy
                'Range("A65536").End(3).Offset(1).PasteSpecial 3
            End With
        Next
        .Close False
    End With
Next
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Mình đang tập viết một code tổng hợp dữ liệu nhiều file đóng theo Sheet. A,B,C,D vào file tổng hợp Mà gặp rắc rối chưa xử lý được xin úp lên đây nhờ các bạn trợ giúp
xin cảm ơn
PHP:
Sub TongHop_FileDong()
Application.ScreenUpdating = False
Dim FileName, SheetName, Path As String, Chk As Boolean
Dim i As Long, j As Long, Sh As Worksheets, Wb As Workbook
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("A", "B", "C", "D")
For i = 0 To UBound(FileName)
    For Each Wb In Workbooks
        If Wb.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
    With ActiveWorkbook
        For j = 0 To UBound(SheetName, 1)
            With ActiveSheet
                MsgBox SheetName(j)
                ''dang roi khuc nay
                'SheetName = Sh.Range("A2", Sh.[J65536].End(3)).Copy
                'Range("A65536").End(3).Offset(1).PasteSpecial 3
            End With
        Next
        .Close False
    End With
Next
Application.ScreenUpdating = True
End Sub

Nhắm mắt sửa code chay, chưa test nha
PHP:
Sub TongHop_FileDong()
Application.ScreenUpdating = False
Dim FileName, SheetName, Path As String, Chk As Boolean, Tam()
Dim i As Long, j As Long, Sh As Worksheets, Wb As Workbook
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("A", "B", "C", "D")
For i = 0 To UBound(FileName)
    For Each Wb In Workbooks
        If Wb.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
    With ActiveWorkbook
         With Sheets(SheetName(i))
             Tam = .Range("A2", .[J65536].End(3)).Value
         End With
        .Close False
    End With
    Range("A65536").End(3).Offset(1).Resize(UBound(Tam), 10) = Tam
Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Nhắm mắt sửa code chay, chưa test nha
PHP:
Sub TongHop_FileDong()
Application.ScreenUpdating = False
Dim FileName, SheetName, Path As String, Chk As Boolean, Tam()
Dim i As Long, j As Long, Sh As Worksheets, Wb As Workbook
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("A", "B", "C", "D")
For i = 0 To UBound(FileName)
    For Each Wb In Workbooks
        If Wb.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
    With ActiveWorkbook
         With Sheets(SheetName(i))
             Tam = .Range("A2", .[J65536].End(3)).Value
         End With
        .Close False
    End With
    Range("A65536").End(3).Offset(1).Resize(UBound(Tam), 10) = Tam
Next
Application.ScreenUpdating = True
End Sub
Vậy mà mò hoài hỏng ra...em đang tập VBA tổng hợp theo sheet chỉ định....lâu nay làm tùm lum thì được khi vào chi tiết thấy rối
xin cảm ơn
 
Upvote 0
Option Explicit
Sub tonghop()
Application.ScreenUpdating = False
Dim sh As Worksheet, Arr(), i, Rng As Range, n, c, r
Sheet1.Range("A4", "GM150").ClearContents
For Each sh In Worksheets
If sh.Name <> "Tong Hop" Then
Arr = sh.Range("B6", sh.[G150].End(3)).Value
n = n + 1
r = Sheet1.[A150].End(3).Offset(1).Row
Sheet1.[A150].End(3).Offset(1) = n
Sheet1.[B150].End(3).Offset(1) = sh.[B3].Value
Sheet1.[C150].End(3).Offset(1) = sh.[G151].End(3).Value
For i = 1 To UBound(Arr)
If Arr(i, 1) <> "" Then
Set Rng = Sheet1.Rows("2:2").Find(Arr(i, 1), , , 1)
If Not Rng Is Nothing Then
c = Rng.Column
Sheet1.Cells(r, c) = Arr(i, 2)
Sheet1.Cells(r, c + 1) = Arr(i, 4)
Sheet1.Cells(r, c + 2) = Arr(i, 6)
End If
End If
Next
End If
Next
End Sub


Các Bác cho em hỏi tại sao viết code thì làm việc đến cột GM nhưng khi chạy thì code chỉ làm việc thực tế đến hết cột U?
Em mới chập chững học hỏi mong các bác giúp đỡ. Thanks!
 
Upvote 0
Mình đang tập viết code tổng hợp dữ liệu từ file đóng bằng mãng . kết quả lấy lên đúng như mong muốn nhưng khi mình thử thay đổi từ
SheetName = Array("A", "B", "C", "D") thành SheetName = Array("D", "C", "B", "A") lộn xộn như vậy thì chạy code báo lỗi chưa tìm ra được
nguyên nhân mong các bạn trợ giúp
xin cảm ơn
PHP:
Sub TH_Theo_FileSheet()
Application.ScreenUpdating = False
Dim FileName(), SheetName(), Path As String, Chk As Boolean
Dim i As Long, j As Long, tam(), WB As Workbook
Dim kq(1 To 65536, 1 To 10), ii As Long, k As Long
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("A", "B", "C", "D"): Rem Neu viet SheetName theo thu tu FileName thi dung
''SheetName = Array("D", "C", "A", "B"): Rem Neu dao nguoc D,C,A,B THI KET QUA SAI VA LOI CODE
Range("A2", [J65536].End(3)).ClearContents
For i = 0 To UBound(FileName)
    For Each WB In Workbooks
        If WB.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
    With ActiveWorkbook
        With Sheets(SheetName(i))
            tam = .Range("A2", .[J65536].End(3)).Value
        End With
        .Close False
        For ii = 1 To UBound(tam)
            k = k + 1
            For j = 1 To UBound(tam, 2)
                kq(k, j) = tam(ii, j)
            Next
        Next
    End With
Next
[A2].Resize(k, UBound(tam, 2)) = kq
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Mình đang tập viết code tổng hợp dữ liệu từ file đóng bằng mãng . kết quả lấy lên đúng như mong muốn nhưng khi mình thử thay đổi từ
SheetName = Array("A", "B", "C", "D") thành SheetName = Array("D", "C", "B", "A") lộn xộn như vậy thì chạy code báo lỗi chưa tìm ra được
nguyên nhân mong các bạn trợ giúp
xin cảm ơn
Tạm sửa thế này
PHP:
Sub TH_Theo_FileSheet()
On Error Resume Next
Application.ScreenUpdating = False
Dim FileName(), SheetName(), Path As String, Chk As Boolean
Dim i As Long, j As Long, tam(), WB As Workbook, sh
Dim kq(1 To 65536, 1 To 10), ii As Long, k As Long
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("D", "C", "A", "B")
Range("A2", [J65536].End(3)).ClearContents
For i = 0 To UBound(FileName)
    For Each WB In Workbooks
        If WB.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
   With ActiveWorkbook
       For Each sh In SheetName
         With .Sheets(sh)
           tam = .Range("A2", .[J65536].End(3)).Value
         End With
       Next
       .Close False
   End With
   For ii = 1 To UBound(tam)
       k = k + 1
       For j = 1 To UBound(tam, 2)
           kq(k, j) = tam(ii, j)
       Next
   Next
Next
[A2].Resize(k, UBound(tam, 2)) = kq
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Tạm sửa thế này
PHP:
Sub TH_Theo_FileSheet()
On Error Resume Next
Application.ScreenUpdating = False
Dim FileName(), SheetName(), Path As String, Chk As Boolean
Dim i As Long, j As Long, tam(), WB As Workbook, sh
Dim kq(1 To 65536, 1 To 10), ii As Long, k As Long
Path = ThisWorkbook.Path
FileName = Array("File1", "File2", "File3", "File4")
SheetName = Array("D", "C", "A", "B")
Range("A2", [J65536].End(3)).ClearContents
For i = 0 To UBound(FileName)
    For Each WB In Workbooks
        If WB.Name = FileName(i) Then Chk = True
    Next
    If Chk = False Then Workbooks.Open Path & "\" & FileName(i)
   With ActiveWorkbook
       For Each sh In SheetName
         With .Sheets(sh)
           tam = .Range("A2", .[J65536].End(3)).Value
         End With
       Next
       .Close False
   End With
   For ii = 1 To UBound(tam)
       k = k + 1
       For j = 1 To UBound(tam, 2)
           kq(k, j) = tam(ii, j)
       Next
   Next
Next
[A2].Resize(k, UBound(tam, 2)) = kq
Application.ScreenUpdating = True
End Sub
Vậy phải chạy thêm một vòng For Next và On Error Resume Next nữa thì mới ok
cảm ơn anh
 
Lần chỉnh sửa cuối:
Upvote 0
Xin các đại huynh chỉ với ạ, em mới học nên có dòng code ko hiểu mong mọi người giải đáp với ạ, em xin cảm ơn mọi người nhiều
Đây là dòng code em không hiểu ý nghĩa của nó là gì nên mọi người chỉ giúp em với : Worksheets("HistData").spnYear.Value = 2004
Nhất là cái spnYear ý, em không hiểu nó là gì, mong mọi người chỉ với ạ, em chạy thì vb nó báo là : Object doén't support this property or method
 
Lần chỉnh sửa cuối:
Upvote 0
Xin các đại huynh chỉ với ạ, em mới học nên có dòng code ko hiểu mong mọi người giải đáp với ạ, em xin cảm ơn mọi người nhiều
Đây là dòng code em không hiểu ý nghĩa của nó là gì nên mọi người chỉ giúp em với : Worksheets("HistData").spnYear.Value = 2004
Nhất là cái spnYear ý, em không hiểu nó là gì, mong mọi người chỉ với ạ, em chạy thì vb nó báo là : Object doén't support this property or method
Úp cái file đó lên mình coi cho
 
Upvote 0
Cái này là code, nó nguyên cả 1 khối, thầy bắt về nhà tự tìm hiểu và làm bài trong đó ạ, nên ko có file mà chỉ có code tự đánh vào theo sách thôi ạ
vậy code như thế nào úp lên mình coi nó xem có khủng lắm không nha
 
Upvote 0
vậy code như thế nào úp lên mình coi nó xem có khủng lắm không nha

Em hiểu rồi, cái spnYear đấy là nút spin button, đây là code, nhưng mà em vẽ cái nút đấy ra rồi chạy vẫn báo lỗi

<Code>
Option Explicit
Option Base 1
Public i As Integer, j As Integer
Public HolSF(1 To 3, 1 To 4) As Variant
Public PerSF(1 To 2, 1 To 4) As Variant
Public RangSF(1 To 2, 1 To 4, 1 To 2) As Variant
Public StdDevMSE As Double, MeanMSE As Double


Sub Main() 'called from the Start button
Call ClearPrev

Worksheets("HistData").spnYear.Value = 2004
j = 0
i = 1

Do While j < 360
If Weekday(DateAdd("d", j, 1 / 1 / 2004), vbMonday) < 6 Then
With Range("HistDataStart")
.Offset(i, 0).Value = DateAdd("d", j, "1 / 1 / 2004")
.Offset(i, 0).Value = Month(DateAdd("d", j, 1 / 1 / 2004))
.Offset(i, 0).Value = Weekday(DateAdd("d", j, 1 / 1 / 2004), vbMonday)
End With
i = i + 1
End If
j = j + 1
Loop

Worksheets("HistData").Visible = True
Worksheets("Welcome").Visible = False
Range("A1").Select

End Sub
</Code>
 
Lần chỉnh sửa cuối:
Upvote 0
các anh cho em hỏi về private function marc1(bf0,n,radphi0,radphi)

em có đoạn code này từ trang nước ngoài.em muốn chuyển nó sang một ngôn ngữ khác.
các anh có thể giải thích cho em đoạn M = Marc1(bf0, n, RadPHI0, RadPHI) ma em gạch chân bên dưới ý nghĩa nó như thế nào được không ạ.như ở đây M sẽ lấy giá trị gì từ marc1.
e đang làm trong basic for androi không có kiểu như thế,có thể thay đổi bằng phương pháp tính toán nào khác đc k ạ
em xin cám ơn các anh


Function WGS84LL2North(PHI As Double, LAM As Double)
Dim a, b, e0, f0, n0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0


'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)


'Convert angle measures to radians
PI = 3.14159265358979
RadPHI = PHI * (PI / 180)
RadLAM = LAM * (PI / 180)
RadPHI0 = PHI0 * (PI / 180)
RadLAM0 = LAM0 * (PI / 180)

af0 = a * f0
bf0 = b * f0
e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
n = (af0 - bf0) / (af0 + bf0)
nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
eta2 = (nu / rho) - 1
p = RadLAM - RadLAM0

M = Marc1(bf0, n, RadPHI0, RadPHI)


I = M + n0
II = (nu / 2) * (Sin(RadPHI)) * (Cos(RadPHI))
III = ((nu / 24) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 3)) * (5 - ((Tan(RadPHI)) ^ 2) + (9 * eta2))
IIIA = ((nu / 720) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 5)) * (61 - (58 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4))

WGS84LL2North = I + ((p ^ 2) * II) + ((p ^ 4) * III) + ((p ^ 6) * IIIA)

End Function


Private Function Marc1(bf0, n, PHI0, PHI)
Marc1 = bf0 * (((1 + n + ((5 / 4) * (n ^ 2)) + ((5 / 4) * (n ^ 3))) * (PHI - PHI0)) _
- (((3 * n) + (3 * (n ^ 2)) + ((21 / 8) * (n ^ 3))) * (Sin(PHI - PHI0)) * (Cos(PHI + PHI0))) _
+ ((((15 / 8) * (n ^ 2)) + ((15 / 8) * (n ^ 3))) * (Sin(2 * (PHI - PHI0))) * (Cos(2 * (PHI + PHI0)))) _
- (((35 / 24) * (n ^ 3)) * (Sin(3 * (PHI - PHI0))) * (Cos(3 * (PHI + PHI0)))))

End Function
 
Upvote 0
Dear GPE,
em có đoạn code như bên dưói nhưng run không được, anh chị help check code sai chổ nào. thanks all.
Mã:
Option Explicit
Private Sub test()
Dim i As Integer
        For i = 1 To Sheets.Count
            Sheets(i).Range([A16], [A65536].End(xlUp)).Resize(, 24).RowHeight = 25
        Next i
End Sub
 
Lần chỉnh sửa cuối:
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