Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
1

Значение в ячейке. Как найти

16.06.2015, 13:02. Просмотров 1047. Ответов 20
Метки нет (Все метки)

Ребят, подскажите пожалуйста. Мне надо найти последнюю заполненную ячейку во втором столбце и присвоить ее значение любой букве. Чтоб потом можно было вывести это значение на экран. А у меня выводит номер строчки. Что не так?
Visual Basic
1
2
iLastRow& = Cells(Rows.Count, 2).End(xlUp).Row
MsgBox & Format(iLastRow&)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2015, 13:02
Ответы с готовыми решениями:

Как найти строку в ячейке которой нужное значение?
Hi! Помогите! Срочно! Я еще в форуме! Как найти строку в ячейке которой...

Как присвоить значение текущей ячейке в VBA?
Добрый день Подскажите пожалуйста как реализовать такой механизм Private Sub...

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

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

Как программно сделать формулу в ячейке или значение ячейки невидимым?
?

20
Кащенко
Заблокирован
16.06.2015, 13:12 2
Visual Basic
1
MsgBox cells(iLastRow&,2)
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 13:13 3
iLastRow& - это у вас номер строки, но не адрес ячейки.
Visual Basic
1
2
3
4
iLastRow& = Cells(Rows.Count, 2).End(xlUp)
MsgBox & Format(iLastRow&.value)
или поправка к вашему варианту
MsgBox & Format(Range("B" & iLastRow&))
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 13:24  [ТС] 4
Вот что у меня получилось, но все равно не работает
Visual Basic
1
2
3
iLastRow& = Cells(Rows.Count, 2).End(xlUp).Row
answer = MsgBox("", vbOKCancel & Format(Cells(iLastRow&, 2)))
If answer = 2 Then Exit Sub
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 13:27 5
словами опишите что вы хотели сделать с помощью 2 строчки кода. MsgBox зачем?
primer_raboty_s_msgbox
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 13:29  [ТС] 6
Мне надо не по строчке, а по второму столбцу найти последнюю заполненную ячейку и показать значение ее
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 13:33 7
предположение
Visual Basic
1
2
3
iLastRow& = Cells(Rows.Count, 2).End(xlUp).Row
answer = MsgBox(Cells(iLastRow&, 2), vbOKCancel )
If answer = 2 Then Exit Sub
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 13:35  [ТС] 8
Значение все равно не показывает, пустое сообщение.
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 13:39 9
значит ячейка пустая (например в ней пробел). Файл покажите.
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 13:43  [ТС] 10
При нажатии на кнопку удаление, нужно чтобы выходило сообщение с предупреждением об удалении с датой и суммой. И как правильно, чтобы при вводе даты, ставились точки сами (12.12.2015)
0
Вложения
Тип файла: rar Книга1.rar (260.0 Кб, 2 просмотров)
Кащенко
Заблокирован
16.06.2015, 14:08 11
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'Кнопка "Выход"
Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub
 
'КНОПКА ЗАПИСЬ"
Private Sub CommandButton2_Click()
UserForm1.Label6 = Sheets("Лист1").Cells(2, 5).Value
Dim i As Integer
i = 0
Do While IsEmpty(Cells(i + 2, 2)) = False
  i = i + 1
Loop
If UserForm1.OptionButton1.Value = True Then
  Sheets("Бюджет").Cells(i + 2, 4).Value = UserForm1.TextBox2.Text
Else
  Sheets("Бюджет").Cells(i + 2, 5).Value = UserForm1.TextBox2.Text
End If
Sheets("Бюджет").Cells(i + 2, 2).Value = UserForm1.TextBox1.Text      'Запись Даты
Sheets("Бюджет").Cells(i + 2, 7).Value = UserForm1.ComboBox1.Value    'Запись Получателя
Sheets("Бюджет").Cells(i + 2, 6).Value = UserForm1.TextBox3.Text      'Запись комментария
Sheets("Бюджет").Cells(i + 2, 3).Value = UserForm1.ComboBox2.Value    'Запись Вида дохода(расхода)
 
'Сальдо----------------------------------------
If Sheets("Лист1").Cells(2, 5).Value > 0 Then
  UserForm1.Label7 = "Баланс положительный"
  UserForm1.Label7.ForeColor = RGB(0, 0, 255)
Else
  UserForm1.Label7 = "Баланс отрицательный"
  UserForm1.Label7.ForeColor = RGB(255, 0, 0)
End If
 
'Очищает все TextBox после выполнения---------------------------
Dim oControl As Control
For Each oControl In UserForm1.Controls
  If TypeOf oControl Is MSForms.TextBox Then oControl.Value = ""
Next oControl
End Sub
 
'КНОПКА УДАЛЕНИЕ
Private Sub CommandButton3_Click()
'iLastRow& = Cells(Rows.Count, 2).End(xlUp).Rows
iLastRow& = Cells(2, 2).End(xlDown).Row
answer = MsgBox("", vbOKCancel, Cells(iLastRow&, 2))
If answer = 2 Then Exit Sub
Sheets("Бюджет").Rows(iLastRow).Delete     'Удаление строки
'Сальдо----------------------------------------
If Sheets("Лист1").Cells(2, 5).Value > 0 Then
  UserForm1.Label7 = "Баланс положительный"
  UserForm1.Label7.ForeColor = RGB(0, 0, 255)
Else
  UserForm1.Label7 = "Баланс отрицательный"
  UserForm1.Label7.ForeColor = RGB(255, 0, 0)
End If
End Sub
 
'Переключатель "Доход"
Private Sub OptionButton1_Click()
UserForm1.ComboBox2.RowSource = "Лист1!B2:B10"
End Sub
 
'Переключатель "Расход"
Private Sub OptionButton2_Click()
UserForm1.ComboBox2.RowSource = "Лист1!C2:C12"
End Sub
 
'Дата
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
  Case 8, 46, 48 To 57
  Case Else: KeyAscii = 0: Beep
End Select
End Sub
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 14:15  [ТС] 12
Значение ячейки все равно не показывает (дату и сумму)
0
Кащенко
Заблокирован
16.06.2015, 14:23 13
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'КНОПКА УДАЛЕНИЕ
Private Sub CommandButton3_Click()
'iLastRow& = Cells(Rows.Count, 2).End(xlUp).Rows
Sheets("Бюджет").Activate
iLastRow& = Cells(2, 2).End(xlDown).Row
answer = MsgBox(Cells(iLastRow&, 2), vbOKCancel, Cells(iLastRow&, 2))
If answer = 2 Then Exit Sub
Sheets("Бюджет").Rows(iLastRow).Delete     'Удаление строки
'Сальдо----------------------------------------
If Sheets("Лист1").Cells(2, 5).Value > 0 Then
  UserForm1.Label7 = "Баланс положительный"
  UserForm1.Label7.ForeColor = RGB(0, 0, 255)
Else
  UserForm1.Label7 = "Баланс отрицательный"
  UserForm1.Label7.ForeColor = RGB(255, 0, 0)
End If
End Sub
Добавлено через 1 минуту

Не по теме:

Как дети малые - всё надо разжевать и в рот положить:wall:



Добавлено через 1 минуту
Цитата Сообщение от Кащенко Посмотреть сообщение
answer = MsgBox(Cells(iLastRow&, 1), vbOKCancel, Cells(iLastRow&, 2)
...
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 14:26  [ТС] 14
Все равно пустое сообщение
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 14:26 15
Лучший ответ Сообщение было отмечено Виктор27 как решение

Решение

Visual Basic
1
2
3
4
5
6
With Sheets("Бюджет")
iLastRow = .Cells(Rows.Count, 2).End(xlUp).Row
answer = MsgBox("Удалить данные " & .Cells(iLastRow, 2) & " сумма " & Cells(iLastRow, 5), vbOKCancel + vbExclamation + vbDefaultButton2, "Удаление данных")
If answer = 2 Then Exit Sub
iLastRow.EntireRow.Delete     'Удаление строки
End With
1
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 14:34  [ТС] 16
)))) А значений нет

Добавлено через 3 минуты
А все заработало. ))))

Добавлено через 35 секунд
Большое Вам спасибо.
0
Vlad999
2813 / 1728 / 516
Регистрация: 02.11.2012
Сообщений: 4,317
16.06.2015, 14:35 17
Лучший ответ Сообщение было отмечено Виктор27 как решение

Решение

упс не дописал.
Visual Basic
1
2
вместо iLastRow.EntireRow.Delete
Rows(iLastRow).EntireRow.Delete
чтобы в сообщении после суммы, если ячейка пустая, отображалось ноль добавьте после Cells(iLastRow, 5) +0.
1
Кащенко
Заблокирован
16.06.2015, 14:36 18
Лучший ответ Сообщение было отмечено Виктор27 как решение

Решение

Книга1.rar - проверяйте
0
Виктор27
11 / 11 / 6
Регистрация: 21.11.2013
Сообщений: 361
16.06.2015, 14:40  [ТС] 19
)))Кащенко благодарю.
0
Night Ranger
Заблокирован
16.06.2015, 15:49 20
Когдато, я хранил все эти штуки прямо в браузере, тоесть тексты кодов которые невозможно создать макроделом я записывал в блокнотах оперы, сейчас все пусто (после ремонта)
если заинтересует я найду, по ключевым словам через поиск как определять последнюю нижнюю и последнюю правую занятую ячейку

Добавлено через 3 минуты
Visual Basic
1
2
3
4
    With ActiveSheet
        y1 = .Cells(.Rows.Count, 1).End(xlUp).Row 'Число строк 1-й колонки
        x1 = .Cells(1, .Columns.Count).End(xlToRight).Column  'Число колонок 1-й строки
    End With
Добавлено через 3 минуты
Есть еще способы, но они менее эфективные
2
16.06.2015, 15:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2015, 15:49

Как написать макрос, чтобы при определенных условиях в ячейке С прибавлялось значение 1
Как написать макрос, чтобы при определенных условиях (к примеру А=В) в ячейке,...

Как обращаться к текущей ячейке не по активной ячейке?
пользовательская функция в вычисляемом столбце умной таблицы Сделал свою...

Как найти кол-во определённых символов в ячейке?
Подскажите пожалуйста, как найти кол-во определённых символов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru