2016-11-09 8 views
0

Все в порядке, пока я не доберусь до петли.Неисправность рабочей книги Excel

Как только я доберусь до петли, он пробежит цикл, изменяя имя и фамилию на два разных столбца, но потом по какой-то причине он дает мне ошибку. Я не могу понять, почему.

код ниже:

Option Explicit 

Public Sub BreakNameApart() 
    'declare variables and assign address to Worksheet object variable 
    Dim intLocation As Integer, shtConsult As Worksheet, rngCell As Range 
    Set shtConsult = _ 
     Application.Workbooks("Franklin Consultants.xls").Worksheets("Consultants") 
    shtConsult.Columns("b").Insert 
    shtConsult.Range("a4").Value = "Last Name" 
    shtConsult.Range("b4").Value = "First Name" 
    shtConsult.Range("a4:b4").Font.Bold = True 
    'beginning in cell A5, seperate each full name into last and first name 
    Set rngCell = shtConsult.Range("a5") 
    Do Until rngCell.Value = "" 
     'find location of space 
     intLocation = InStr(1, rngCell.Value, " ") 
     'assign first name to appropriate cell in column B 
     rngCell.Offset(columnoffset:=1).Value = _ 
       Left(String:=rngCell.Value, Length:=intLocation - 1) 
     'assign last name to current cell 
     rngCell.Value = Mid(String:=rngCell.Value, Start:=intLocation + 1) 
     'assign the address of the cell in the next row to the rngCell variable 
     Set rngCell = rngCell.Offset(rowoffset:=1) 
    Loop 
    'adjust the width of columns A and B 
    shtConsult.Columns("a:b").AutoFit 


End Sub 

В частности это дает мне ошибку здесь:

rngCell.Offset(columnoffset:=1).Value = _ 
       Left(String:=rngCell.Value, Length:=intLocation - 1) 
+0

Посмотрите на val ue из 'rngCell', когда возникает ошибка - если в имени нет места, тогда' intLocation' будет 0, а функция 'LEFT' будет пытаться и вернуть -1 символов из' rngCell', вызывая ошибку. Другой возможный вариант: у всех имен есть начальное пространство в начале? –

ответ

0

Следующий код будет разделить значения в столбце А в столбцы А и В (последний и имя):

Option Explicit 

Public Sub BreakNameApart() 

    'declare variables and assign address to Worksheet object variable 
    Dim intLocation As Integer, shtConsult As Worksheet, rngCell As Range 

    Set shtConsult = _ 
     Application.Workbooks("Franklin Consultants.xls").Worksheets("Consultants") 

    shtConsult.Columns("b").Insert 
    shtConsult.Range("a4").Value = "Last Name" 
    shtConsult.Range("b4").Value = "First Name" 
    shtConsult.Range("a4:b4").Font.Bold = True 

    'beginning in cell A5, seperate each full name into last and first name 
    Set rngCell = shtConsult.Range("a5") 

    Do Until rngCell.Value = "" 
     'find location of space 
     intLocation = InStr(1, rngCell.Value, " ") 

     If intLocation > 0 Then ' space found 
      'assign first name to appropriate cell in column B 
      rngCell.Offset(0, 1).Value = Left(rngCell.Value, intLocation - 1) 

      'assign last name to current cell 
      rngCell.Value = Mid(rngCell.Value, intLocation + 1) 
     End If 
     'assign the address of the cell in the next row to the rngCell variable 
     Set rngCell = rngCell.Offset(1, 0) 
    Loop 

    'adjust the width of columns A and B 
    shtConsult.Columns("a:b").AutoFit 


End Sub 
+0

Благодарим за помощь. Очень признателен. – TommyBoy116

+0

@ TommyBoy116 добро пожаловать, пожалуйста, отметьте как ответ –

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