2015-02-27 13 views
8

To tylko część mojego kodu. wartość z pola tekstowego zostanie skopiowana do konkretnej komórki w arkuszu certyfikacji bankowej. Muszę się upewnić, że komórka C5 jest specjalnie dopasowana, niezależnie od długości tekstu wprowadzonego w polu tekstowym. Próbowałem wymieniać zasięg z komórkami bezskutecznie. Problem ten wydaje się tak proste, ale nie wiem, dlaczego to nie działa ...Metoda autofitów klasy zakresu nieudana (błąd czasu uruchomienia 1004)

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

Range("C5").Select 

Selection.AutoFit 
+0

można spróbować montażu całą kolumnę zamiast konkretnej komórki. 'Kolumny (" C: C "). AutoFit' – izzymo

Odpowiedz

8

Spróbuj

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

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

dzięki .. ten rodzaj działa ... błąd nie pokazuje ... ale teraz, myślę, czy autofit ma zastosowanie tylko do konkretnej komórki? jak C5! W każdym razie, dziękuję za odpowiedź! –

+2

Funkcja Nope Autofit działa tylko w Kolumnach, ponieważ jedna komórka w kolumnie nie może mieć innej szerokości niż reszta kolumny. Jeśli tego właśnie potrzebujesz, możesz rozważyć scalenie komórek. – izzymo

+0

Możesz także pozbyć się linii 'Sheets(). Select', ponieważ nic nie kupuje. Jeśli chcesz być bardziej konkretny: 'Worksheets (" Bank Certification "), kolumny (" C: C ") .Autofit' powinien to zrobić. – FreeMan

2

innych odpowiedzi prawidłowo stwierdzić, że AutoFit musi być używany z kolumny, a nie tylko komórka. Są jednak pewne niuanse do korzystania z AutoFit, których nie zrozumiałem, dopóki nie zacząłem eksperymentować.

Każda z pierwszych dwóch poniższych instrukcji użyje wartości wszystkich w kolumnie C, aby automatycznie dopasować szerokość kolumny. Oznacza to, że jeśli wartość w innej komórce w kolumnie C (na przykład C10), która jest szersza niż wartość w C5, będzie pasować do kolumny najszerszej komórki w kolumnie C(na przykład C10).

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

Jeśli chcesz tylko dopasować kolumny na 1 komórce (lub pewnego zakresu komórek, ale nie cała kolumna lub kolumny), użyj oświadczenie takiego:

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

I oczywiście, to zawsze lepiej forma napisać kod tak, gdy można:

  1. Całkowicie zakwalifikuj zakres, chyba że masz absolutną pewność, że będziesz pracować tylko z jednym arkuszem roboczym.
  2. Użyj nazwanych zakresów lub obiektów zakresu.

Na przykład:

Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit 
' or 
Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5") 
AutoFitRange.Columns.AutoFit 
Powiązane problemy