Страницы: 1
RSS
VBA. Вставить значение в первую пустую ячейку столбца.
 
Помогите написать код VBA, с пом. которого можно вставить значение в первую пустую ячейку столбца.  
Нижеуказанный код работает не так как нужно.  
Sub ssd()  
Cells(Rows.Count, 1).End(xlUp).Offset(1) = "11"  
End Sub  
 
Пример прикреплен
 
On Error Resume Next  
Columns(1).SpecialCells(xlCellTypeBlanks)(1) = "11"  
If Err Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = "11"  
Err.Clear
 
{quote}{login=Казанский}{date=21.10.2011 03:37}{thema=}{post}On Error Resume Next  
Columns(1).SpecialCells(xlCellTypeBlanks)(1) = "11"  
If Err Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = "11"  
Err.Clear{/post}{/quote}  
здорово, работает.  
Но возникла след. проблема..  
подскажите, как к примеру переменной "В" присвоить значение = номера строки в которой находится первая пустая ячейка.
 
Другим способом  
 
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row
 
{quote}{login=Казанский}{date=21.10.2011 04:23}{thema=}{post}Другим способом  
 
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row{/post}{/quote}  
 
спасибо
 
{quote}{login=Alexstt}{date=21.10.2011 04:34}{thema=Re: }{post}{quote}{login=Казанский}{date=21.10.2011 04:23}{thema=}{post}Другим способом  
 
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row{/post}{/quote}  
 
спасибо{/post}{/quote}  
 
подскажите, как к переменной "В" присвоить значение = номеру строки в которой находится ВТОРАЯ пустая ячейка.
 
Первая пустая +1
 
{quote}{login=Юрий М}{date=25.10.2011 05:26}{thema=}{post}Первая пустая +1{/post}{/quote}  
Это как?  
Если номер первой пустой ячейки =1, номер второй пустой ячейки = 5, 1+1 <> 5
 
У Вас ведь уже известна первая?  
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row  
Кто мешает записать так:  
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row + 1  
Это и будет вторая. Вопрос как стоял - "как к примеру переменной "В" присвоить значение = номера строки в которой находится первая пустая ячейка"...
 
{quote}{login=Юрий М}{date=25.10.2011 05:34}{thema=}{post}У Вас ведь уже известна первая?  
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row  
Кто мешает записать так:  
b = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole).Row + 1  
Это и будет вторая. Вопрос как стоял - "как к примеру переменной "В" присвоить значение = номера строки в которой находится первая пустая ячейка"...{/post}{/quote}  
нужен номер 2й пустой ячейки.
 
Set c = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole) 'первая пустая  
Set c = Columns(1).FindNext© 'вторая пустая  
b = c.Row
 
Казанский же показывал:  
Columns(1).SpecialCells(xlCellTypeBlanks)(2)
Я сам - дурнее всякого примера! ...
 
Нет, Серж :) Разве что по For Each перебирать и остановиться на второй.  
Но если в первом столбце UsedRange нет пустых ячеек, то SpecialCells(xlCellTypeBlanks) не сработает, поэтому я и переключился на Find.
 
{quote}{login=Казанский}{date=25.10.2011 05:41}{thema=}{post}Set c = Columns(1).Find(Empty, Cells(Rows.Count, 1), xlValues, xlWhole) 'первая пустая  
Set c = Columns(1).FindNext© 'вторая пустая  
b = c.Row{/post}{/quote}  
 
к сожалению ваш пример не работает
 
Alexstt, на Вашем примере - вторая - это какая ячейка?
 
{quote}{login=Юрий М}{date=25.10.2011 05:56}{thema=}{post}Alexstt, на Вашем примере - вторая - это какая ячейка?{/post}{/quote}  
Прикрепил пример.  
2я пустая ячейка имеет порядковый номер =4
 
Я про первый файл. Это ячейка А5 или А14? Я уже запутался о чём разговор.
 
Sub qwe()  
Dim b, c  
For b = 1 To Rows.Count  
   If Cells(b, 1) = "" Then  
       c = c + 1  
       If c = 2 Then Exit For  
   End If  
Next  
MsgBox b  
End Sub
 
{quote}{login=Юрий М}{date=25.10.2011 06:01}{thema=}{post}Я про первый файл. Это ячейка А5 или А14? Я уже запутался о чём разговор.{/post}{/quote}  
 
В первом примере это ячейка А5
 
с циклом по массиву  
 
Sub io()  
Dim v, x&, i&  
v = Columns(1).Value  
For i = 1 To UBound(v)  
   If v(i, 1) = "" Then x = x + 1: If x = 2 Then Exit For  
Next  
MsgBox i  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=26.10.2011 09:20}{thema=}{post}с циклом по массиву  
 
Sub io()  
Dim v, x&, i&  
v = Columns(1).Value  
For i = 1 To UBound(v)  
   If v(i, 1) = "" Then x = x + 1: If x = 2 Then Exit For  
Next  
MsgBox i  
End Sub{/post}{/quote}  
 
Всем спасибо
 
{quote}{login=Казанский}{date=25.10.2011 06:23}{thema=}{post}Sub qwe()  
Dim b, c  
For b = 1 To Rows.Count  
   If Cells(b, 1) = "" Then  
       c = c + 1  
       If c = 2 Then Exit For  
   End If  
Next  
MsgBox b  
End Sub{/post}{/quote}  
 
Спасибо! красиво.
Страницы: 1
Читают тему
Наверх