2012-04-05 34 views
5

-1 Tôi có một số mã rất cơ bản và đơn giản VBA trong trường hợp Worksheet_SelectionChange như sau:.Strange Excel VBA Lỗi "Expression quá phức tạp" # IND

btnB.Top = btnA.Top + btnA.Height 

Nó chạy tốt trên máy tính của tôi, nhưng nó hoạt động không thường xuyên trên máy tính của đồng nghiệp của tôi. Có vẻ như 3 trong số 5 lần nhấp quanh trang tính sẽ xuất hiện lỗi "Expression Too Complex". Hai công việc khác mà không ném một lỗi. Tôi đã thử:

Dim D as Double:D = btnA.Top + btnA.Height 
btnB.Top = D 

Và điều tương tự, đôi khi có thể xảy ra lỗi. Khi lỗi xảy ra, tôi đã phá vỡ và kiểm tra giá trị của D"-1.#IND". Tôi googled giá trị đó và phát hiện ra nó có nghĩa là interdeterminate. btnA.Top là khoảng 11.500 vì vậy nó không phải là một vấn đề tràn. Dường như không có vần điệu hay lý do nào cho vấn đề này. Trong 16 năm lập trình VB và VBA, tôi chưa bao giờ thấy hay nghe về bất cứ điều gì khá giống thế này. Cảm ơn sự giúp đỡ/thông tin chi tiết.

Sửa Full Code:

Sub LineUpBtns() 
    CommandButton2.Top = CommandButton1.Top + CommandButton1.Height 
    CommandButton3.Top = CommandButton2.Top + CommandButton2.Height 
End Sub 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    LineUpBtns 
End Sub 
+0

cách bạn có thể chỉ định một đôi để btnB.Top? –

+0

Bởi vì nó là một đôi. TypeName (btnB.Top) = Double – DontFretBrett

+0

BtnA, btnB là gì? Một số loại đối tượng dường như có một thuộc tính .Top là một đơn thay vì Double. EDIT: không bao giờ tâm trí - trả lời ngay bây giờ trong bình luận của bạn. –

Trả lời

0

#IND là một NaN (Not a Number) là một giá trị kiểu dữ liệu số đại diện cho một giá trị không xác định/unrepresentable. Trong các tính toán dấu phẩy động như bạn nêu, các cửa sổ hiển thị nó như -1. # IND (không xác định).

Để có được nó, tôi tin rằng bạn phải làm một cái gì đó như:

Dim d As Double 

On Error Resume Next 
d = 0/0 
On Error GoTo 0 

Nếu bạn có bất kỳ lỗi xử lý sau đó loại bỏ nó để kiểm tra vấn đề này. Bạn có thể gặp một số loại lỗi. Vì vậy, đối với các vấn đề như của bạn có thể khó chẩn đoán mà không cần xem sổ làm việc, bạn có thể tải nó lên www.ozgrid.com/forum để chúng tôi có thể tự kiểm tra.

+0

Tôi không có lỗi xử lý trên phụ. Ngay cả khi tôi thêm lỗi xử lý (như trên lỗi tiếp tục tiếp theo), nó vẫn ném lỗi. Âm thanh như một con bọ. Tôi không thể tải lên sổ làm việc (chính sách công ty), nhưng nó có thể không giúp đỡ nhiều anyway bởi vì các mã hoạt động hoàn hảo trên máy tính của tôi và một số người khác tôi đã cố gắng ngoại trừ một. Đó là mã SUPER đơn giản. Không có lỗi. Tôi nghĩ rằng nó phải là một lỗi – DontFretBrett

+0

Tôi không nghĩ rằng chúng tôi có thể giúp bạn, đơn giản của bạn không cho chúng tôi những thông tin cần thiết. Bạn có thể đăng ít nhất toàn bộ sự kiện selection_change. – Reafidy

+0

Chồi, nó nghiêm túc đơn giản như ... Worksheet_SelectionChange (Nhắm mục tiêu là Phạm vi): btnB.Top = btnA.Top + BtnA.Height: btnC.Top = btnB.Top + btnB.Height: End Sub. Không đùa, tôi không dưới/quá phóng đại sự đơn giản. Tôi không thể tải lên toàn bộ bảng tính nhưng nó sẽ không tạo ra sự khác biệt nào. Tôi biết bạn cảm thấy như tôi đang để lại một cái gì đó ra bởi vì nó không có ý nghĩa. Đó là vấn đề, nó không có ý nghĩa và tôi không thể hiểu tại sao nó hoạt động trên tất cả các máy tính ngoại trừ một máy tính. – DontFretBrett

0

Hãy thử thêm này để mã

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    application.EnableEvents = False 
    ''''your code here 
    application.EnableEvents = True 
End Sub 

It wont tạo ra một tràn rồi

1

Tôi biết điều này có vẻ điên rồ, nhưng có lẽ tham khảo các nút dựa trên bảng tính ... Có thể có một cái gì đó chỉ loopy đủ trên máy khác mà nó đang tìm kiếm trong một tờ mà không có các nút trên nó để có thể sản xuất các loại lỗi ...

Sub LineUpBtns()   
    Sheets("Sheet1").Shapes("CommandButton2").Top = Sheets("Sheet1").Shapes("CommandButton1").Top + Sheets("Sheet1").Shapes("CommandButton1").Height 
    Sheets("Sheet1").Shapes("CommandButton3").Top = Sheets("Sheet1").Shapes("CommandButton2").Top + Sheets("Sheet1").Shapes("CommandButton2").Height 
End Sub 

Hy vọng sự giúp đỡ này S!!

Các vấn đề liên quan