Chuyên mục xử lý, gỡ rối code VBA (2 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ác ơi cho e hỏi về code khi nhấp vào Button hoặc Command thì nó hiện lên như hình ảnh này ạ. E cảm ơn ạ
 

File đính kèm

  • Untitled.png
    Untitled.png
    7.7 KB · Đọc: 25
Upvote 0
Khi mình dùng InputBox, khi chưa nhập dữ liệu gì mà nhấp chọn OK sẽ báo lỗi These's a problem with this formula. Xin hỏi các AC là có cách nào để bẫy được lỗi này không ạ !
 
Upvote 0
Mình tải trên diễn đàn về đoạn code như sau để dùng nội suy tuyến tính:

Public Mang1(1000) As Double
Public Mang2(1000) As Double
Public Const mMax = 1
Public Const nMax = 1
Public bang(mMax, nMax) As Double


Public Function NSTT(Mang1, Mang2, Gia_tri As Double) As Double
Dim i As Integer
Dim delta As Double
If Gia_tri <= Mang1(1) Then
NSTT = Mang2(1)
Else
i = 0
Do
i = i + 1
Loop Until (Mang1(i) >= Gia_tri)
delta = (Mang2(i) - Mang2(i - 1)) / (Mang1(i) - Mang1(i - 1))
NSTT = delta * (Gia_tri - Mang1(i - 1)) + Mang2(i - 1)
End If
End Function
Khi thực thi macro này thì ta sẽ có hàm NSTT, trong đó phải chọn 3 giá trị: mang1, mang2 và giá trị cần nội suy
Vấn đề của mình là nếu muốn khai báo cụ thể giá trị của Mang1, Mang2 ví dụ mảng 1: từ 1-10, mảng 2 từ 11-20 chẳng hạn (để khỏi phải chọn giá trị mảng 1, mảng 2 khi thực thi, chỉ chọn giá trị cần nội suy thôi) thì phải làm thế nào.
Xin cảm ơn!
 
Upvote 0
chưa hiểu ý của bạn cho lắm, bạn có thể đưa yêu cầu và cho ví dụ cách làm khác cách làm của bạn, có thể các thành viên hiểu được ý bạn và giúp bạn
 
Upvote 0
E có 1 file như sau: E muốn CHỈ khi thay đổi giá trị tại cột C thì mới gán giá trị tương ứng sang cột G, và tại dòng nào thì gán giá trị tại dòng đấy, Code của e hiện tại nó gàn cho cả 100 dòng ạ :(
E cảm ơn các AC !
 

File đính kèm

Upvote 0
Bạn thay sub sự kiện cũ bằng cái này:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr As Long
lr = Range("B65000").End(3).Row
If Target.Column = 3 Then
    If Target.Row > 4 Then
        If Target.Row < lr Then
            Target.Offset(, 4).Value = Target.Offset(, 2).Value
        End If
    End If
End If
End Sub
E cảm ơn ạ. Nhưng a có thể sửa giúp e sự kiện Caculation được ko ạ. E đang học về VBA ạ :)
 
Upvote 0
Đừng có code cái kiểu dỡ hơi ấy... Đã sự kiện thì phải change mới được theo mong muốn của bạn... Không ai đời đi xài cái Caculation ở đây cả,... khi chạy cà dựt cà dựt....sao chạy nổi...

Xài sự kiện change là hợp lý

kaka thanks a. E đang học hỏi VBA, mún thực hành nhìu cho qen ạ, đang bắt đầu học viết sự kiện, tại bị mắc ở đoạn code này. Đúng là nó hơi giật thật nếu nhìu dữ liệu :)
 
Upvote 0
A cho e hỏi 1 chút là dòng code này : lr = Range("B65000").End(3).Row . Số 3 ở trong ngoặc () có tác dụng j vậy ạ. nó có pải là cột C, nhưng Range lại là từ cột B +-+-+-+

P/s: E tìm được tài liệu về cách sử dụng End() rùi ạ. Thank a :)
 
Lần chỉnh sửa cuối:
Upvote 0
chưa hiểu ý của bạn cho lắm, bạn có thể đưa yêu cầu và cho ví dụ cách làm khác cách làm của bạn, có thể các thành viên hiểu được ý bạn và giúp bạn

Ý của mình là khai báo sẵn giá trị của 2 biến: mảng 1 và mảng 2 (tức là giá trị của nó cố định khi chạy code) chỉ nhập giá trị của biến Gia_tri khi chay code thôi.
Ở đoạn code mình cung cấp thì mỗi lần chạy code mình phải khai báo giá trị của 3 biến: mang1, mang2, Gia_tri
 
Upvote 0
Ý của mình là khai báo sẵn giá trị của 2 biến: mảng 1 và mảng 2 (tức là giá trị của nó cố định khi chạy code) chỉ nhập giá trị của biến Gia_tri khi chay code thôi.
Ở đoạn code mình cung cấp thì mỗi lần chạy code mình phải khai báo giá trị của 3 biến: mang1, mang2, Gia_tri
Bạn hãy gán cho Mang1, Mang2 ngay trong hàm, đây là mảng 1 chiều nên gán thì như thế này

Mã:
Mang1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 
Upvote 0
Cho mình hỏi về bài mình tí. Mình có một file quản lý xe ra vào công ty, trong Userform. Có 3 textbox lầy dữ liệu dựa vào combobox bảng số xe và dữ liệu đó nằm ở sheet Taitrong. Trường hợp xảy ra là khi mình đánh bảng số xe vào combobox đó nếu đã có dữ liệu thị nó hiện ra 3 textbox kia và không có thi nó cứ báo lỗi và không cho nhập tiếp. Mong được giúp đỡ là nó không báo nữa cho dù không có dữ liệu sẵn và cho phép nhập mới tiếp. Rất cảm ơn được các anh em giúp đỡ thêm.
 

File đính kèm

Upvote 0
Nhờ Bác nào hướng dẫn em tạo ra được dòng này << Selection.Offset(1, 0).Select>> e coi hoài nhưng không hiểu
 
Upvote 0
Selection.Offset(1, 0).Select
ô nào đang chọn, và từ ô đó di chuyển xuống 1 dòng
ví dụ
con trỏ chuột đang đứng ở ô B3
Selection.Offset(1, 0).Select sẽ là ô B4 đang chọn
 
Upvote 0
ActiveCell.Offset(1, 0).Range("A1").Select
tôi mới ghi macro được nè bạn, trước khi ghi macro bạn bật Use Relative References lên

Cảm ơn bạn, nhưng thắt mắt mình ko phải ở chỗ đó mà ở chỗ đoạn code này nè:

Sub Nhap()
Application.ScreenUpdating = 0
Sheets("Nhap").Select: Range("B2:B8").Select
Selection.Copy
Sheets("CSDL").Select: Range("A65535").Select
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False: Sheets("Nhap").Select
End Sub


Mình mùn biết chỗ Selection.Offset(1, 0).Select sao mình làm ra được chỗ này? Nhưng không phải gõ tay vào
 
Upvote 0
Cảm ơn bạn, nhưng thắt mắt mình ko phải ở chỗ đó mà ở chỗ đoạn code này nè:

Mình mùn biết chỗ Selection.Offset(1, 0).Select sao mình làm ra được chỗ này? Nhưng không phải gõ tay vào
Thua bài đầu tiên bạn hỏi Selection.Offset(1, 0).Select và tôi đã giải thích thì bạn nói là biết rồi nhưng làm sao ghi Macro
và tôi cũng chỉ bạn cách ghi macro giống yêu cầu như bạn nói, thì bạn lại nói không phải bạn muốn chỗ này, bạn muốn chỗ kia....
thôi thì bây giờ bạn muốn cái gì thì tự nghiên cứu đi, chứ tôi mà nói nữa thì bạn lại muốn khác tiếp. thân
 
Upvote 0
Mình muốn in các sheet mà mình mong muốn bằng cách click vào button (click một lần in nhiều sheet), tuy nhiên đôi khi do tính chất công việc nên mình muốn thay đổi số lượng các sheet được in ra có thể ít hơn hoặc nhiều hơn, mình đặt điều kiện để in các sheet này, tuy nhiên khi chạy thử mình thấy VBA báo lỗi "syntax error", mong mọi người xem thử file của mình và giúp mình sửa lại file này :
 
Upvote 0
Mình muốn in các sheet mà mình mong muốn bằng cách click vào button (click một lần in nhiều sheet), tuy nhiên đôi khi do tính chất công việc nên mình muốn thay đổi số lượng các sheet được in ra có thể ít hơn hoặc nhiều hơn, mình đặt điều kiện để in các sheet này, tuy nhiên khi chạy thử mình thấy VBA báo lỗi "syntax error", mong mọi người xem thử file của mình và giúp mình sửa lại file này :
File của mình đâu vậy mình?
 
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