Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

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

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cám ơn các bác nhưng vẫn còn có vấn đề. Trong một số Sheet, ô A1 định dạng sẵn kiểu text vì vậy khi chạy code này thì tại những ô đó sẽ không ra kết quả mà sẽ ghi toàn bộ nội dung công thức ra.
Theo em nghĩ, các bác viết lại giùm là định dạng lại toàn bộ ô A1 trên toàn bộ các sheet về dạng chung là General rồi mới chạy công thức.
Cám ơn!
 
Upvote 0
Cám ơn các bác nhưng vẫn còn có vấn đề. Trong một số Sheet, ô A1 định dạng sẵn kiểu text vì vậy khi chạy code này thì tại những ô đó sẽ không ra kết quả mà sẽ ghi toàn bộ nội dung công thức ra.
Theo em nghĩ, các bác viết lại giùm là định dạng lại toàn bộ ô A1 trên toàn bộ các sheet về dạng chung là General rồi mới chạy công thức.
Cám ơn!
Nếu bạn làm bằng tay việc định dạng này (trên toàn bộ sheet) mà không có vấn đề thì cứ Record macro là ra
Chẳng hạn:
PHP:
Sub Test()
  Sheets.Select
  Sheet1.Range("A1").Activate
  With Selection
    .NumberFormat = "General"
    .Value = "=CELL(""filename"",RC)"
  End With
  Sheet1.Select
End Sub
 
Upvote 0
Không biết hỏi có bị ngố không nhưng e thắc mắc xin chỉ em nha. code (PHP code) là gì vậy mấy anh chị. em thấy mấy anh chị sử dụng code để thuận tiện trong excel hay quá.thế e muốn học để biết nó thì học về phần nào ạ
 
Upvote 0
Không biết hỏi có bị ngố không nhưng e thắc mắc xin chỉ em nha. code (PHP code) là gì vậy mấy anh chị. em thấy mấy anh chị sử dụng code để thuận tiện trong excel hay quá.thế e muốn học để biết nó thì học về phần nào ạ
Đó là cách để người ta "đóng khung" mấy chổ quan trọng cho bạn dể nhìn ấy mà, nó chẳng liên quan gì đến Excel cả
Ví dụ:
- Khi tôi viết code thế này:
Sub Test()
''Code here
End Sub
Xong, tôi dùng chuột bôi đen 3 dòng code trên rồi bấm nút php sẽ được thế này:
PHP:
Sub Test()
 ''Code here
End Sub

Xem hình minh họa

attachment.php




(Đương nhiên trong quá trình soạn thảo bài viết, bạn phải bấm nút "Đổi Sang Khung Lớn" mới thấy được nút này)
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    42.2 KB · Đọc: 105
Upvote 0
nhờ các anh chị giải thích giùm đoạn code

"If UCase(n.Name) = UCase(Nname) Then" trong đó n.Name và Nname khác nhau như thế nào ?

Được trích ra từ một hàm
PHP:
Function RangeNameExists(Nname) As Boolean
'   Kiem tra xem ten co ton tai hay khong
'   Neu ton tai thi tra ve TRUE
    Dim n As Name
    RangeNameExists = False
    For Each n In ActiveWorkbook.Names
        If UCase(n.Name) = UCase(Nname) Then
            RangeNameExists = True
            Exit Function
        End If
    Next n
End Function
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
nhờ các anh chị giải thích giùm đoạn code

"If UCase(n.Name) = UCase(Nname) Then" trong đó n.Name và Nname khác nhau như thế nào ?

Được trích ra từ một hàm

Function RangeNameExists(Nname) As Boolean
' Kiem tra xem ten co ton tai hay khong
' Neu ton tai thi tra ve TRUE
Dim n As Name
RangeNameExists = False
For Each n In ActiveWorkbook.Names
If UCase(n.Name) = UCase(Nname) Then
RangeNameExists = True
Exit Function
End If
Next n
End Function
Nname là tên name mà bạn sẽ gõ vào hàm
n là tên của biến trong code
Đúng ra chỉ cần so sánh If n.Name = Nname Then nhưng người ta thêm UCase vào để nó không phân biệt HOA thường, ví dụ name là ndu, bạn gõ vào hàm là NDU nó vẫn hiểu đấy chính là 1
Mà code kiểm tra name thì đâu cần dài thế nhỉ? Tôi nghĩ không cần dùng For vẫn được đấy
 
Upvote 0
Đó là cách để người ta "đóng khung" mấy chổ quan trọng cho bạn dể nhìn ấy mà, nó chẳng liên quan gì đến Excel cả
Ví dụ:
- Khi tôi viết code thế này:
Sub Test()
''Code here
End Sub
Xong, tôi dùng chuột bôi đen 3 dòng code trên rồi bấm nút php sẽ được thế này:
PHP:
Sub Test()
 ''Code here
End Sub

Xem hình minh họa

attachment.php




(Đương nhiên trong quá trình soạn thảo bài viết, bạn phải bấm nút "Đổi Sang Khung Lớn" mới thấy được nút này)
ý mình hỏi là tại sao mình biết mà tạo ra code như thế được đó bạn.tại sao không liên quan đến excel nhỉ. mình thấy nhiều người hỏi để giải thích các đọan code lắm mà
 
Upvote 0
ý mình hỏi là tại sao mình biết mà tạo ra code như thế được đó bạn.tại sao không liên quan đến excel nhỉ. mình thấy nhiều người hỏi để giải thích các đọan code lắm mà
Tại vì bạn đang hỏi PHP code ---> Đây là cách trang trí trên web nên đâu có liên quan gì đến Excel
Còn như bạn muốn nói đến "nội dung" trong PHP code ấy thì: Mở file nào đó có code, bấm Alt + F11 sẽ nhìn thấy ngay!
 
Upvote 0
à tại mình hỏi chưa rõ.đúng là nội dung code.nhưng làm sao mình biết mà soạn nội dung code cho đúng vậy.muốn học về nó phải bắt đầu từ đâu.tại mình thấy trong wed giaiphap cua mình hỏi nhiều về nó mà mình không biết phải học từ đâu đó.
 
Upvote 0
Xin anh giải thích đoạn code thành tiền dịch ra sát nghĩa

Vd: 3006001 thì công thức sẽ hiện : Ba triệu không trăm lẻ sáu ngàn lẻ một đồng.
Tôi muốn thể hiện đầy đủ đơn vị hàng trăm: ba triệu không trăm lẻ sáu ngàn không trăm lẻ một đồng.

Kèm theo link : http://www.mediafire.com/?zkz2ti4ymmw

Xin chỉ giúp tôi.Cảm ơn hoặc gởi địa chỉ mail : nguyenanhhung1982@gmail.com
 
Upvote 0
à tại mình hỏi chưa rõ.đúng là nội dung code.nhưng làm sao mình biết mà soạn nội dung code cho đúng vậy.muốn học về nó phải bắt đầu từ đâu.tại mình thấy trong wed giaiphap cua mình hỏi nhiều về nó mà mình không biết phải học từ đâu đó.
Ah... làm sao biết uh? Thì học thôi... Học tại đây:
Chập chững đến VBA!
Kiến thức cơ bản về Visual Basic for Applications (VBA)
 
Upvote 0
Vd: 3006001 thì tôi muốn thể hiện đầy đủ đơn vị hàng trăm: ba triệu không trăm lẻ sáu ngàn không trăm lẻ một đồng. Kèm theo link : http://www.mediafire.com/?zkz2ti4ymmw
Xin chỉ giúp tôi.Cảm ơn hoặc gởi địa chỉ mail : nguyenanhhung1982@gmail.com
Sao bạn không đăng tại đây hàm dịch số thành chữ có trong file;
Đưa đường dẫn cũng sẽ có người ngại xem (như mình đây, khà, khà,. . . --=0 :-= --=0 ! )
 
Upvote 0
thành tiền dịch sát nghĩa

PHP:
   3.009.001,00 
   Ba trieäu khoâng traêm leû chín ngaøn moät ñoàng chaün  
   Ba trieäu khoâng traêm leû chín ngaøn khoâng traêm leû moät ñoàng chaün  
  [CENTER][CENTER] caùc anh chò chæ em ñoaïn maõ TH 2 laø coù khoâng traêm leû moät ñoàng chaün.Em laøm hoaøi maø khoâng ra Xin chæ giaùo [/CENTER][/CENTER]
   Public Function vnd(howmuch) 
   Dim ketqua, sotien, nhom, chu, dich, s1, s2, s3 As String 
   Dim l, j, vitri As Double 
   Dim hang, doc, dem 
   If howmuch = 0 Then 
       ketqua = "Khoâng ñoàng" 
   Else 
   If Abs(howmuch) >= 1E+15 Then 
   ketqua = "Soá gì maø to theá 1 trieäu tyû khoâng ñuû xaøi haû, nhaäp laïi !" 
   Else 
   If howmuch < 0 Then 
   ketqua = "Tröø" & Space(1) 
   Else 
   ketqua = Space(0) 
   End If 
   sotien = Format(Abs(howmuch), "##############0.00") 
   sotien = Right(Space(15) & sotien, 18) 
   hang = Array("None", "traêm", "möôi", "gì ñoù") 
   doc = Array("None", "ngaøn tyû", "tyû", "trieäu", "ngaøn", "ñoàng", "chaün") 
   dem = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín") 
   For l = 1 To 6 
       nhom = Mid(sotien, l * 3 - 2, 3) 
       If nhom <> Space(3) Then 
           Select Case nhom 
               Case "000" 
                   If l = 5 Then 
                       chu = "ñoàng" & Space(1) 
                   Else 
                       chu = Space(0) 
                   End If 
               Case ".00" 
                   chu = "chaün" 
               Case Else 
                   s1 = Left(nhom, 1) 
                   s2 = Mid(nhom, 2, 1) 
                   s3 = Right(nhom, 1) 
                   chu = Space(0) 
                   hang(3) = doc(l) 
                   For j = 1 To 3 
                       dich = Space(0) 
                       S = Val(Mid(nhom, j, 1)) 
                       If S > 0 Then 
                           dich = dem(S) & Space(1) & hang(j) & Space(1) 
                       End If 
                       Select Case j 
                           Case 2 And S = 1 
                               dich = "möôøi" & Space(1) 
                           Case 3 And S = 0 And nhom <> Space(2) & "0" 
                               dich = hang(j) & Space(1) 
                       Case 3 And S = 5 And s2 <> Space(1) And s2 <> "0" 
                               dich = "l" & Mid(dich, 2) 
                           Case 2 And S = 0 And s3 <> "0" 
                               If (s1 >= "1" And s1 <= "9") Or (s1 = "0" And l = 4) Then 
                                   dich = "khoâng traêm leû" & Space(1) 
                               End If 
                           End Select 
                           chu = chu & dich 
                      Next j 
                   End Select 
                   vitri = InStr(1, chu, "möôi moät", 1) 
                   If vitri > 0 Then Mid(chu, vitri, 9) = "möôi moát" 
                   ketqua = ketqua & chu 
               End If 
           Next l 
       End If 
   End If 
   vnd = UCase(Left(ketqua, 1)) & Mid(ketqua, 2) 
   End Function
 
Upvote 0
Run & Call hoặc chỉ cần ghi tên sub khác nhau ở đâu?

Hiện tại em mới nghịch nên không thấy sự khác nhau ví dụ:
1. Call test1
2. run test1

3. Test1

CHẳng nhẽ excel vô cớ lại thừa như trên sao? em nghĩ phải có một nguyên nhân nào đó?

XIn chỉ giáo
 
Upvote 0
Code Find chính xác từ cần tìm ?

Chào các bạn ! Nhờ các bạn giúp tôi Code Find chính xác từ cần tìm

Ví dụ: 1 ô có từ Chính, 1 ô khác có từ Trung Chính. Để tìm chính xác ô có từ Chính thì trong hộp Find and Replace phải đánh dấu kiểm vào mục Match entire cell contents (như file đính kèm). Nhưng do Macro không ghi lại được thao tác này nên tôi không biết viết code như thế nào ? Rất mong được sự giúp đỡ của các bạn !
 

File đính kèm

  • Find.rar
    117.1 KB · Đọc: 44
Upvote 0
Đó là xlWhole

PHP:
Sub GPE_Macro()
    Cells.Find(What:="Chính", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
End Sub
 
Upvote 0
Chào các bạn! Mình có 1 vấn đề nhờ forum chỉ giúp như sau:
- Mình quản lý canteen và lên lịch nấu ăn cho từng ngày vì thế có ngày ăn chay trong tháng nên mình muốn chuyển đổi thứ ngày tháng năm DL ra AL để tiện theo dõi và lên thực đơn.
ex: Sat 09/01/2010 (DL) --> T7 25/11 (AL).
Mong được sự hồi âm sớm của các bạn!
Tks.
 
Upvote 0
Xin mấy sư huynh chỉ giúp giùm code để tính tuần thứ mấy trong năm khi ta nhập vào một ngày tháng năm bất kỳ nào đó. Ví du: khi nhập vào ngày 08/01/2010 thì nó tính ra là tuần số 2 trong năm 2010.
Sư huynh nào biết, xin chỉ giùm. Cảm ơn nhiều.

Còn đây là hàm tính tuần mà bạn Lê Văn Duyệt đã viết nhưng tôi kiểm tra năm 2010 thì không đúng với hàm weeknum trong excel. Xin mấy bác chỉ giùm:
Function WEEKNR(InputDate As Long) As Integer Dim A As Integer, B As Integer, C As Long, D As Integer WEEKNR = 0 If InputDate < 1 Then Exit Function A = Weekday(InputDate, vbSunday) B = Year(InputDate + ((8 - A) Mod 7) - 3) C = DateSerial(B, 1, 1) D = (Weekday(C, vbSunday) + 1) Mod 7 WEEKNR = Int((InputDate - C - 3 + D) / 7) + 1 End Function
 
Upvote 0
Xin mấy sư huynh chỉ giúp giùm code để tính tuần thứ mấy trong năm khi ta nhập vào một ngày tháng năm bất kỳ nào đó. Ví du: khi nhập vào ngày 08/01/2010 thì nó tính ra là tuần số 2 trong năm 2010.
Sư huynh nào biết, xin chỉ giùm. Cảm ơn nhiều.

Còn đây là hàm tính tuần mà bạn Lê Văn Duyệt đã viết nhưng tôi kiểm tra năm 2010 thì không đúng với hàm weeknum trong excel. Xin mấy bác chỉ giùm:
Function WEEKNR(InputDate As Long) As Integer Dim A As Integer, B As Integer, C As Long, D As Integer WEEKNR = 0 If InputDate < 1 Then Exit Function A = Weekday(InputDate, vbSunday) B = Year(InputDate + ((8 - A) Mod 7) - 3) C = DateSerial(B, 1, 1) D = (Weekday(C, vbSunday) + 1) Mod 7 WEEKNR = Int((InputDate - C - 3 + D) / 7) + 1 End Function
Bạn thử code này xem:
PHP:
Function WeekNumUDF(DateValue As Date, Optional TypeValue As Byte = 1) As Long
  Dim FirstDay As Date
  If TypeValue > 0 And TypeValue < 3 Then
    FirstDay = DateSerial(Year(DateValue), 1, 1)
    WeekNumUDF = Int((DateValue - FirstDay - Weekday(DateValue - (2 - TypeValue) * 6, 2) + 8) / 7) - (Weekday(FirstDay) <> TypeValue)
  End If
End Function
Cú pháp
=WeekNumUDF(Ngày, kiểu)
Trong đó:
- Ngày là ngày tháng năm nào đó
- Kiểu = 1 nếu tính chủ nhật là đầu tuần và = 2 nếu tính thứ 2 là đầu tuần
--------------------
Xem file đính kèm (trong đó có cả phương pháp dùng công thức cho bạn tham khảo)
 

File đính kèm

  • WeekNum.rar
    22.3 KB · Đọc: 32
Upvote 0
Em lên diễn đàn thấy code tạo mục lục như sau:
Private Sub Worksheet_Activate()
Dim wSheet As
Worksheet
Dim lCount
As
Long
lCount
=
1

With Me
.Columns(1).
ClearContents
.Cells(1, 1) =
"INDEX"
End With

For
Each wSheet In Worksheets
If wSheet.Name <> Me.
Name Then
lCount
= lCount +
1
With wSheet
.Range("A1").Name = "Start" & wSheet.
Index
.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:=
_
"Index", TextToDisplay:=
"Back to Index"
End With
Me
.Hyperlinks.Add Anchor:=Me.Cells(lCount, 1), Address:="", SubAddress:=
_
"Start" & wSheet.Index, TextToDisplay:=wSheet.
Name
End
If
Next wSheet
End Sub

Nhưng khỗ nỗi khi áp dụng vào file của em có vấn đề như sau:

- Ở ô A1 của mỗi sheet có từ " Back to Index" nhưng bấm vào không quay trở lại sheet Index
- Trong các sheet của em tại Ô A1 đều có dữ chữ vậy mà chữ" Back to Index" cứ nằm đè lên làm khi in cứ bị dính nó hoài.
- Em muốn mấy anh giúp em sửa code trên như thê nào để bấm vào back to Index thì quay về sheet Index và em không muốn in chữ Back to Index ra ( In ra có làm gì đâu ). Nếu được thì hay quá!! Nếu không được mấy anh bỏ luôn chữ đó ra dùm em thì em cũng cám ơn nhiều lắm rồ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