2016-02-03 9 views
-1

Мне нужно заполнить мои пустые ячейки на листе с нулем. В настоящее время я делаю это для C12: H35. Может кто-то, пожалуйста, сообщите, что не так в моем коде. Он даже не дает никакой ошибки. Также мне нужно сделать это динамически. Так что я пытался сделать, какКод Vba: заполнение пустых ячеек динамически

Dim sht as Worksheet Set sht = This Workbook.Sheets("MySheet") sht.Range(sht.cells(C12:3),sht.cells(12,Columns.count).End(xlToLeft)).Select

Никто не работает :(

Этот код предназначен не динамический диапазон, который снова не работает

Sub FillEmptyCell 
     Dim rng as Range 
     Dim i as Long 
     Dim cell as Range 
    Set rng= Sheets("Mysheet").Range("C12:H35") 

For each cell in rng 
    If cell.value = " " Then cell.value= "0" 
    End if 
Next 
End Sub 
+0

Прежде всего, необходимо, чтобы после FillEmptyCell был «()». – Siva

+0

В вашей нединамической версии вы проверяете, содержит ли ячейка пробел, cell.value = "". Скорее всего, вы этого не хотите. Попробуйте изменить эту часть на If Trim (cell.value) = "" Что касается вашей динамической части, я не совсем уверен, что вы пытаетесь выполнить –

+0

К сожалению, это ошибки ввода, у меня есть функциональная скобка, и нет любое пространство, но его не работает, код не работает. Затем cell.value = "0". – Sunaina

ответ

0

Этот код работал хорошо для меня

Sub FillEmptyCell() 
    Dim rng As Range 
    Dim i As Long 
    Dim cell As Range 
    Dim sht As Worksheet 
    Set sht = ActiveWorkbook.Sheets("Sheet1") 
    sht.Activate 
    'Range("C12:AL12").Select 
    'Range(Selection, Selection.End(xlDown)).Select 
    Set rng = Range(Range("C12"), Range("AD" & sht.UsedRange.Rows.Count)) 
    For Each cell In rng 
    If cell.Value = "" Then cell.Value = "0" 
    Next 
End Sub 
+0

Я сделал это. Спасибо. Кроме того, код, который я упомянул выше, предназначен для выбора динамического диапазона, поэтому вместо того, чтобы фиксировать диапазон как c12: h35, если я использую динамический диапазон выше, он не работает. – Sunaina

+0

Dim sht as Worksheet Set sht = This Workbook.Sheets («MySheet») sht.Range (sht.cells (C12: 3), sht.cells (12, Columns.count) .End (xlToLeft)). Выберите – Sunaina

+0

Пожалуйста укажите ожидаемую начальную позицию ячейки. Я думаю, конечная ячейка является динамическим значением – Siva

0

У меня также есть один больше предложений для вас.

Sub FillEmptyCell() 
    Dim rng as Range 
    Dim i as Long 
    Dim cell as Range 
    Set rng= Sheets("Mysheet").Range("C12:H35") 
    Sheets("Mysheet").Activate 
    rng.Select 
    Selection.Replace What:="", Replacement:="0", LookAt:=xlWhole, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

    End Sub 
+0

Он дает ошибку, поскольку метод выбора класса диапазона не удался fir rng. Выберите – Sunaina

+0

Это может быть так, что лист не активирован. Попробуйте отредактированный код – Siva

+0

Я его протестировал, отлично работал для меня – Siva

0

Ваш код в порядке, но оператор if был выключен, я также изменил кавычки, чтобы в них не было места. Когда это так, VBA ищет пространство в ячейке, а не пустую ячейку.

Sub FillEmptyCell() 
Dim rng As Range 
Dim i As Long 
Dim cell As Range 

    Range("C1").Select 
    colRef = ActiveCell.Column 
    lastrow = Cells(Rows.Count & colRef).End(xlUp).Row 
    Do Until ActiveCell.Column = 31 
     colRef = ActiveCell.Column 
     lastrow = Cells(Rows.Count & colRef).End(xlUp).Row 
     For x = 1 To lastrow 
      If ActiveCell.Value = "" Then 
       ActiveCell.Value = "0" 
       ActiveCell.Offset(1).Select 
      Else 
       ActiveCell.Offset(1).Select 
      End If 
     Next 
     ActiveCell.Offset(-lastrow, 1).Select 
    Loop 
End Sub 
+0

Я благодарю, но мне это нужно для динамического диапазона Josh – Sunaina

+0

Какой динамический диапазон? Я не понял в вашем вопросе –

+0

Диапазон может варьироваться в зависимости от данных. В настоящее время я просто делаю для C12: H35.but может быть любое количество строк, охватывающих столбцы от C до AD.so для этого мне нужно изменить свой код – Sunaina

0

Я не знаю, если вы хотите, чтобы заполнить пустые ячейки нулями, или, если это ваше намерение научиться VBA, но вам не нужно VBA для того, чтобы сделать это:
Сначала выберите где вы хотите работать,
затем нажмите Ctrl + G (Go) и нажмите кнопку «Special».
На этом экране (экран «Перейти к специальному») установите флажок «Заготовки» и нажмите «Ввод».
Теперь нужно выбрать только пустые ячейки.
Введите «0» и нажмите «Ctrl + Enter».

+0

Я wana делаю это с помощью VBA :) Я знаю этот метод. thanks :) – Sunaina

+0

Кроме того, этот метод не будет работать для динамического диапазона данных. Будет ли это? – Sunaina

+0

Вы начали этот пост, говоря о диапазоне C12: H: 35, который является диапазоном исправлений, или я что-то упускаю? – Dominique

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