Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/код VBA на эксель, с формулами условия - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » код VBA на эксель, с формулами условия (Макросы/Sub)
код VBA на эксель, с формулами условия
aidanasabaz Дата: Четверг, 25.04.2024, 21:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
здравствуйте!
помогите пожалуйста найти ошибку в этом макросе. Макрос должен по значениям в ячейках Q1 и Q19 (в Q1 - название реагента, Q19 - формула реагента) которые отображаются по формулам в этих ячейках, уменьшать на выбранное количество из таблицы, которая находится на листе ТАБЛИЦА ДАННЫХ....есть несколько вариантов отображения в этих ячейках данных, когда
1)Q1=все, а Q19=формула реагента(<>все)

2) Q19=все, а Q1=название реагента( <>все)
3) Q1=название реагента (<>все), и Q19=формула реагента (<>все)

я через чатжпт создала код, но к сожалению не все 3 условии, которые описала выше, работают через этот макрос. помогите мне решить эту проблему :(
снизу вставляю тот самый код.
[vba]
Код
Sub ВыдатьРеагент()
Dim ЛистРеагенты As Worksheet
Dim НомерКоробки As String
Dim НазваниеРеагента As String
Dim Количество As Integer
Dim i As Long

Set ЛистДанных = Sheets("Таблица данных")
Set ЛистВыбора = Sheets("Основной лист")

НомерКоробки = ЛистВыбора.Range("U38").Value
If ЛистВыбора.Range("q1").Value <> "(все)" And ЛистВыбора.Range("q19").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q1").Value
ElseIf ЛистВыбора.Range("q1").Value = "(все)" And ЛистВыбора.Range("q19").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q19").Value
ElseIf ЛистВыбора.Range("q19").Value = "(все)" And ЛистВыбора.Range("q1").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q1").Value
End If

Количество = ЛистВыбора.Range("U39").Value

If ЛистВыбора.Range("Q19").Value = "(Все)" And ЛистВыбора.Range("Q1").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 2).End(xlUp).Row
If ЛистДанных.Cells(i, 2).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество

MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

ElseIf ЛистВыбора.Range("Q1").Value = "(Все)" And ЛистВыбора.Range("Q19").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 3).End(xlUp).Row
If ЛистДанных.Cells(i, 3).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество
MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents
Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

ElseIf ЛистВыбора.Range("Q19").Value <> "(Все)" And ЛистВыбора.Range("Q1").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 2).End(xlUp).Row
If ЛистДанных.Cells(i, 2).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество

MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents
End If

End Sub
[/vba]
 
Ответить
Сообщениездравствуйте!
помогите пожалуйста найти ошибку в этом макросе. Макрос должен по значениям в ячейках Q1 и Q19 (в Q1 - название реагента, Q19 - формула реагента) которые отображаются по формулам в этих ячейках, уменьшать на выбранное количество из таблицы, которая находится на листе ТАБЛИЦА ДАННЫХ....есть несколько вариантов отображения в этих ячейках данных, когда
1)Q1=все, а Q19=формула реагента(<>все)

2) Q19=все, а Q1=название реагента( <>все)
3) Q1=название реагента (<>все), и Q19=формула реагента (<>все)

я через чатжпт создала код, но к сожалению не все 3 условии, которые описала выше, работают через этот макрос. помогите мне решить эту проблему :(
снизу вставляю тот самый код.
[vba]
Код
Sub ВыдатьРеагент()
Dim ЛистРеагенты As Worksheet
Dim НомерКоробки As String
Dim НазваниеРеагента As String
Dim Количество As Integer
Dim i As Long

Set ЛистДанных = Sheets("Таблица данных")
Set ЛистВыбора = Sheets("Основной лист")

НомерКоробки = ЛистВыбора.Range("U38").Value
If ЛистВыбора.Range("q1").Value <> "(все)" And ЛистВыбора.Range("q19").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q1").Value
ElseIf ЛистВыбора.Range("q1").Value = "(все)" And ЛистВыбора.Range("q19").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q19").Value
ElseIf ЛистВыбора.Range("q19").Value = "(все)" And ЛистВыбора.Range("q1").Value <> "(все)" Then
НазваниеРеагента = ЛистВыбора.Range("q1").Value
End If

Количество = ЛистВыбора.Range("U39").Value

If ЛистВыбора.Range("Q19").Value = "(Все)" And ЛистВыбора.Range("Q1").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 2).End(xlUp).Row
If ЛистДанных.Cells(i, 2).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество

MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

ElseIf ЛистВыбора.Range("Q1").Value = "(Все)" And ЛистВыбора.Range("Q19").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 3).End(xlUp).Row
If ЛистДанных.Cells(i, 3).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество
MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents
Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

ElseIf ЛистВыбора.Range("Q19").Value <> "(Все)" And ЛистВыбора.Range("Q1").Value <> "(Все)" Then
For i = 2 To ЛистДанных.Cells(ЛистДанных.Rows.Count, 2).End(xlUp).Row
If ЛистДанных.Cells(i, 2).Value = НазваниеРеагента And ЛистДанных.Cells(i, 1).Value = НомерКоробки Then
If ЛистДанных.Cells(i, 9).Value >= Количество Then
ЛистДанных.Cells(i, 9).Value = ЛистДанных.Cells(i, 9).Value - Количество

MsgBox "Реагенты выданы успешно.", vbInformation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents

Exit Sub
End If
End If
Next i

MsgBox "Выбрана не та коробка или в коробке недостаточное количество реагента.", vbExclamation
ЛистВыбора.Range("U38").ClearContents
ЛистВыбора.Range("U39").ClearContents
End If

End Sub
[/vba]

Автор - aidanasabaz
Дата добавления - 25.04.2024 в 21:30
Pelena Дата: Пятница, 26.04.2024, 10:43 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Файл с примером помог бы в понимании проблемы


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеФайл с примером помог бы в понимании проблемы

Автор - Pelena
Дата добавления - 26.04.2024 в 10:43
aidanasabaz Дата: Пятница, 26.04.2024, 12:17 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, здравствуйте, прикрепила файл...надеюсь сможете решить :)
 
Ответить
СообщениеPelena, здравствуйте, прикрепила файл...надеюсь сможете решить :)

Автор - aidanasabaz
Дата добавления - 26.04.2024 в 12:17
aidanasabaz Дата: Пятница, 26.04.2024, 14:30 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, спасибо за обратную связь, решила проблему)))
 
Ответить
СообщениеPelena, спасибо за обратную связь, решила проблему)))

Автор - aidanasabaz
Дата добавления - 26.04.2024 в 14:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » код VBA на эксель, с формулами условия (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!