Автоподбор строк с использованием VBA - PullRequest
2 голосов
/ 15 февраля 2012

Я пытаюсь выполнить автозаполнение ячеек в диапазоне от A2 до AA2.

Ниже приведен код, который я пытаюсь выполнить:

Application.ScreenUpdating = False
Dim wkSt As String
Dim wkBk As Worksheet
wkSt = ActiveSheet.Name
For Each wkBk In ActiveWorkbook.Worksheets
    On Error Resume Next
    wkBk.Activate
    Cells.Range("A2:AA2").EntireColumn.AutoFit
Next wkBk
Sheets(wkSt).Select
Application.ScreenUpdating = True

Ниже приведен пример данных Excel, отображаемых нана экране:

     A            B           C
1    Jhon is the best employee
2    Emp_Name     Emp_id      Empsal.

Обратите внимание, что «Jhon - лучший сотрудник» - все в одной ячейке (A1), но при отображении его содержимое перекрывает ячейки B1 и C1.

При использовании приведенного выше кода данные затем отображаются следующим образом:

     A                               B       C
1    Jhon is the best employee
2    Emp_Name                        Emp_id  Empsal

Как можно выполнить автозаполнение для каждой ячейки второй строки на каждом листе?Выше кода не удается автоматически установить данные из моей второй строки.

Вот как я хочу, чтобы дисплей выглядел следующим образом:

     A        B      C
1    Jhon is the best employee
2    Emp_Name Emp_id Empsal.

т.е. столбцы должны плотно прилегать к "Emp_Name", "Emp_id"и" Эмпсал ".- не вокруг "Джон - лучший работник".

РЕДАКТИРОВАТЬ Кроме того, если в следующих строках (3, 4 и т. Д.) Есть данные, их также следует включить в автоподбор.Например, данные должны отображаться, как показано ниже:

     A          B      C
1    Jhon is the best employee
2    Emp_Name   Emp_id Empsal.
3    Jhon Peter 2      2000

Ответы [ 2 ]

5 голосов
/ 15 февраля 2012

Если вы хотите заставить Autofit игнорировать первую строку и только Autofit на основе содержимого строк 2 и более. Я не думаю, что это возможно. Один из способов сделать это - сохранить содержимое первой строки, удалить его, автоматически установить и вставить обратно содержимое первой строки:

Public Sub test()

  Dim wkSt As String
  Dim wkBk As Worksheet
  Dim temp As Variant

  wkSt = ActiveSheet.Name
  For Each wkBk In ActiveWorkbook.Worksheets
      On Error Resume Next
      wkBk.Activate
      temp = wkBk.Rows(1)
      wkBk.Rows(1).ClearContents
      wkBk.Columns("A:AA").AutoFit
      wkBk.Rows(1) = temp
  Next wkBk
  Sheets(wkSt).Select

End Sub
3 голосов
/ 15 февраля 2012

Вместо выполнения автозаполнения на EntireColumn, сделайте это на Columns.

wkBk.Range("A2:AA2").Columns.AutoFit

Посмотрите справку VBA для AutoFit ...

РЕДАКТИРОВАТЬ Теперь вы хотите сделать автофит не только для строки 2, но также для 3, 4, 5 и т. Д. Это требует только простой модификации:

wkBk.Range("A2:AA999").Columns.AutoFit

Вышеприведенное предполагает, что строка 999 является вашей последней строкой с данными, которые будут автоматически установлены. Вы также можете включить все строки вплоть до нижней части листа следующим образом:

wkBk.Range(Range("A2"), Cells(wkBk.Rows.Count, "AA")).Columns.AutoFit

Этого должно быть достаточно, чтобы вы встали на правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...