2013-04-19 5 views
1

Редактировать: я взял все советы и отредактировал мой код. Теперь это работает !!! Спасибо.Excel VBA через рабочие листы не работает

Вот новый код:


Sub WorksheetLoop() 

    Dim AllWorksheets As Integer 

    Dim Worksheet As Integer 

    AllWorksheets = ActiveWorkbook.Worksheets.Count 
    For Worksheet = 2 To AllWorksheets 

     Sheets(1).Select 

     Cells(10, Worksheet).Value = Sheets(Worksheet).TextBoxes(2).Text 
     Cells(13, Worksheet).Value = Sheets(Worksheet).TextBoxes(3).Text 
     Cells(18, Worksheet).Value = Sheets(Worksheet).TextBoxes(1).Text 
     Cells(24, Worksheet).Value = Sheets(Worksheet).TextBoxes(5).Text 
     Cells(34, Worksheet).Value = Sheets(Worksheet).TextBoxes(6).Text 
     Cells(34, Worksheet).Value = Sheets(Worksheet).TextBoxes(4).Text 

    Next Worksheet 
End Sub 

Оригинал Проблема

Так есть документ Excel, который содержит количество листов. На первом листе должен быть создан сценарий. Он должен начинаться со второго листа и должен записывать содержимое текстовых полей (пожалуйста, не спрашивайте, почему есть текстовые поля ...) для Cell B10, B13, и так далее. Затем сценарий должен перейти к таблице 3 и содержание текстовых полей должны идти С10, С13, ... Вы получаете идею ... Я знаю, что это возможно только в Z ....

Но почему я продолжаю получать сообщения об ошибках?

My VBA knowlage очень маленький, извините за очевидные ошибки.

Редактировать: Я взял совет о пространствах вокруг & Но я все еще получаю «объект не поддерживает это свойство или метод»


Sub WorksheetLoop() 

    Dim AllWorksheets As Integer 

    Dim Worksheet As Integer 

    AllWorksheets = ActiveWorkbook.Worksheets.Count 

    For Worksheet = 2 To AllWorksheets 
     For CellAscii = 66 To (AllWorksheet + 66) 
      Cell = Chr(CellAscii) 
      Sheets(1).Select 
      Range(Cell & "10").Value = Sheets(Worksheet).TextBox2.Text 
      Range(Cell & "13").Value = Sheets(Worksheet).TextBox3.Text 
      Range(Cell & "18").Value = Sheets(Worksheet).TextBox1.Text 
      Range(Cell & "24").Value = Sheets(Worksheet).TextBox5.Text 
      Range(Cell & "30").Value = Sheets(Worksheet).TextBox6.Text 
      Range(Cell & "34").Value = Sheets(Worksheet).TextBox4.Text 
     Next CellAscii 
    Next Worksheet 
End Sub 
+0

Я вижу, вы добавили пространство до и после '&'. Если ваш код все еще не работает, какая строка указывает на ошибку? –

+0

Это не говорит мне строки ... Просто сообщение об ошибке – thara

+1

Хорошо, когда вы получите сообщение об ошибке, нажмите кнопку «Отладка». На какой строке вы добираетесь? Я сомневаюсь в этом: «Листы (рабочий лист) .TextBox2.Text' –

ответ

4

Просто попробуйте следующее при попытке открыть текстовые поля:

Sheets("SheetName").TextBoxes("TextBox Name").Text 

Убедитесь, что «SheetName» и «TextBox Name» являются правильными.

Надеюсь, что это было полезно для вас.

2

Range не принимает ссылку на схему Да, он берет один с RyCx.
В любом случае используйте SheetX.Cell для доступа к определенной ячейке в определенной строке и столбце.

Вы перебрать клетки, как это:

Sub MyLoop() 
    For RowCounter = 1 To 20 

     For ColumnCounter = 1 To 20 
      Set curCell = Worksheets("Sheet1").Cells(RowCounter , ColumnCounter) 
      If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 
     Next ColumnCounter 
    Next RowCounter 
End Sub 
2

Основная ошибка в коде, что нет пространства до и после &

Изменения Range(Cell&"10").Value к Range(Cell & "10").Value. Точно так же для остальных, и ваш код будет работать нормально :)

Смежные вопросы