2015-02-27 13 views
8

Đây chỉ là một phần của mã của tôi. giá trị từ hộp văn bản ở đây đã được sao chép vào ô cụ thể trong trang tính Chứng nhận Ngân hàng. Tôi cần đảm bảo rằng ô C5 được trang bị cụ thể bất kể độ dài của văn bản tôi đã nhập trong hộp văn bản. Tôi đã thử phạm vi thay đổi với các ô không có kết quả. Vấn đề này dường như đơn giản như vậy nhưng tôi không biết tại sao nó không hoạt động ...Phương pháp phân lớp phạm vi tự động không thành công (Lỗi thời gian chạy 1004)

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

Range("C5").Select 

Selection.AutoFit 
+0

Bạn có thể thử trang bị lại toàn bộ cột thay vì các tế bào đặc biệt. 'Cột (" C: C "). AutoFit' – izzymo

Trả lời

8

Hãy thử

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

Columns("C:C").Autofit 
+0

cảm ơn .. kinda này hoạt động .. lỗi không hiển thị ... nhưng ngay bây giờ, tôi đang nghĩ, là tự động áp dụng chỉ cho một tế bào cụ thể? như C5! Dù sao, cảm ơn câu trả lời của bạn! –

+2

Nope Autofit chỉ hoạt động trên các Cột dưới dạng một ô trong một cột không được có chiều rộng khác so với phần còn lại của cột. Nếu đó là những gì bạn yêu cầu, bạn có thể xem xét việc hợp nhất các ô. – izzymo

+0

Ngoài ra, bạn có thể thoát khỏi dòng 'Sheets(). Select', vì nó không mua cho bạn bất cứ thứ gì. Nếu bạn cần phải cụ thể hơn: 'Worksheets (" Chứng nhận Ngân hàng "). Cột (" C: C "). Tự động' nên làm điều đó. – FreeMan

2

câu trả lời khác một cách chính xác nói rằng AutoFit phải được sử dụng với một cột, không chỉ một ô. Tuy nhiên, có một số sắc thái khi sử dụng AutoFit mà tôi không hiểu cho đến khi tôi bắt đầu thử nghiệm.

Một trong hai câu lệnh đầu tiên bên dưới sẽ sử dụng tất cả các giá trị trong cột C để Tự động điền chiều rộng của cột. Điều đó có nghĩa là nếu có một giá trị trong một số ô khác trong cột C (ví dụ C10) rộng hơn giá trị trong C5, nó sẽ phù hợp với cột tới ô rộng nhất trong cột C (ví dụ C10).

Range("C5").EntireColumn.AutoFit  ' Will fit to widest cell in column 
Range("C:C").AutoFit     ' Will fit to widest cell in column 

Nếu bạn muốn chỉ phù hợp với cột trên 1 tế bào (hoặc một phạm vi nhất định của tế bào, nhưng không phải toàn bộ cột hoặc cột), sử dụng một tuyên bố như thế này:

Range("C5").Columns.AutoFit   ' Will fit column C to width of cell C5 

Và tất nhiên, nó luôn luôn hình thức tốt hơn để viết mã như thế này khi bạn có thể:

  1. Hoàn toàn đủ điều kiện trong phạm vi trừ khi bạn hoàn toàn chắc chắn bạn sẽ chỉ làm việc với một trang tính
  2. Sử dụng các phạm vi hoặc phạm vi được đặt tên.

Ví dụ:

Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit 
' or 
Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5") 
AutoFitRange.Columns.AutoFit 
Các vấn đề liên quan