Леди и Джентльмены, столкнулся с проблемой. ну тоесть как прощелкал проблему((( были открыты 2 книги в одной макросы. в одной много кода, весь кол был привязан к кодовому имени лист1. сохранился, и тут что-то пошло не так. сама таблица стала листом 11. весь код остался в чем-то не понятном под названием лист1, но редактор вба отображает его не как лист эксель, значек висит как у книги, но оно все равно является частью книги. ну остался и ладно. только не работает. понаписано там моими кривыми руками нормально так)). собственно работоспособность кода я восстановил, копипастом + изменением всего, где написано "лист1", на лист11. Но хотелось бы избежать подобных проблем в будущем. есть решения? подскажите плс.
даммы и господа)) подскажиье плс. Оформляю я технические отчеты. В них может быть от одного до ***** протоколов. Каждый протокол нумеруется по порядку. Ну а в случае со сбором в отчет протоколов много. Идут по порядку. На заполнение протоколрв написал макрос, к вот как быть с нумерацией страниц, хоть убейте. Форма отчета предусматривает небольшой косяк. Каждый протокол- отдельный фаил.
Sub Перезапись_формул_при_изменении_листа()
Dim Rng As Range, c, LastRow As Long
Set Rng = Worksheets(1).UsedRange
Set c = Rng.Find("ИТОГО:", LookIn:=xlValues)
If Not c Is Nothing Then
With c
firstAddress = .Address
i = 0
Do
Строка = c.Row
Столбец = c.Column
Лист2.Cells(Строка, Столбец + 1).FormulaLocal = "=СУММ(G" & строка1 + 1 & ":G" & Строка2 - 1 & ")"
Лист2.Cells(Строка, Столбец + 2).FormulaLocal = "=СУММ(H" & строка1 + 1 & ":H" & Строка2 - 1 & ")"
Лист2.Cells(Строка, Столбец + 3).FormulaLocal = "=СУММ(I" & строка1 + 1 & ":I" & Строка2 - 1 & ")"
Лист2.Cells(Строка, Столбец + 4).FormulaLocal = "=СУММ(J" & строка1 + 1 & ":J" & Строка2 - 1 & ")"
Лист2.Cells(Строка, Столбец + 5).FormulaLocal = "=СУММ(K" & строка1 + 1 & ":K" & Строка2 - 1 & ")"
Лист2.Cells(Строка, Столбец + 6).FormulaLocal = "=СУММ(L" & строка1 + 1 & ":L" & Строка2 - 1 & ")"
Set c = Rng.FindNext(c)
Loop While Not c Is Nothing And .Address <> firstAddress
End With
End If
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
If Cells(LastRow, Столбец).Value = "ВСЕГО:" Then Exit Sub
лист1.Cells(LastRow + 1, Столбец).Value = "ВСЕГО:"
Лист2.Cells(LastRow + 1, Столбец + 1).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";G1:G" & lLastRow & ")"
Лист2.Cells(LastRow + 1, Столбец + 2).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";H1:H" & lLastRow & ")"
Лист2.Cells(LastRow + 1, Столбец + 3).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";I1:I" & lLastRow & ")"
Лист2.Cells(LastRow + 1, Столбец + 4).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";J1:J" & lLastRow & ")"
Лист2.Cells(LastRow + 1, Столбец + 5).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";K1:K" & lLastRow & ")"
Лист2.Cells(LastRow + 1, Столбец + 6).FormulaLocal = "=СУММЕСЛИ(F1:F" & lLastRow & ";""Итого:"";L1:L" & lLastRow & ")"
End Sub
короче говоря, Господа и Дамы, хелп. не понимаю как данную конструкцию переписать так, чтобы удовлетворяла условиям Вероники. оно меняет вообще все наглухо. причем не корректно от слова "вообще" а нужно, чтобы переписывалась только последующая строка с "ИТОГО:" ЗЫ при замене вообще всего формула копируется из первой строки. мне опыта не хватает, чтобы это прописать как нужно. ну или мозгов... тема к которой относится -https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=170394&TITLE_SEO=170394-vnutritablichnye-itogi файл ниже.
из наблюдений, созданные темы начинают отображаться далеко не сразу, и сейчас дал ответ (как всегда кривой))) Веронике Суворовой ну как сейчас))) почти час назад. но в топике до сих пор видно что писала только она. и это при том что ответил еще и Sanja. когдато был у меня форум. такая же проблема случилась из-за того что мускуль сожрал всю выделенную под него память на хосте. поэтому внимание, вопрос)) если проблема в том-же я готов скинуться на увеличение объема памяти. ибо учусь у вас. а за уроки, по хорошему, не плохо бы и заплатить. собственно вопрос куда скинуть, если поможет))
И снова здравствуйте, подскажите плс как реализовать округление.
Код
Public intNom_pol As Integer
Public douKo As Double
Public objNompol1 As Object
Public objNompol2 As Object
' переменные задаются OptionButton. в объектных переменных текстбоксы.
Private Sub CommandButton1_Click()
Dim lonSumm As Long, lonMin As Long
lonSumm = (Val(objNompol1.Value) + Val(objNompol2.Value)) / 2
lonMin = Val(objNompol1.Value) - Val(objNompol2.Value)
douKo = CDbl(Format(Abs(lonMin / lonSumm * 100), "#,#0.0"))
Лист1.ComboBox4.Value = dabKo
End Sub
такой код работает, но есть одно но, точность . проблема в том, что это расчет шага для устройств пбв. а там число может быть либо целым, либо дробным, но обязательно с 5ю десятыми. не могу понять как округлить с такими критериями. т.к. есть варианты когда на выходе округляется, например, до 4,9.
P.S. Ткнуть меня лицом в кривизну кода как всегда приветствуется))
Изменено: Евгений Паршутин - 18.03.2025 12:10:03(End Sub не туда написал)) несколько раз))))
вопрос конечно тот еще но мне нужно прикрутить к файлу инструкцию по включению макросов. Но есть один нюанс))), как говорил Петьке Василий Иванович)). Я сам прыгнул через пару версий экселя. И понятия не имею когда у них разрешение на запуск макросов поменялось с обычного "да" при открытии книги, на необходимость лезть в свойства файла и там разрешать, ну а потом еще и стандартненько в экселе))) подскажите плс с какой версии они ввели этот бред?))
И снова здравствуйте. вроде по теме все просто должно быть, но столкнулся с неприятной проблемой. При добавлении контрола в тулбокс адрес, на мой взгляд, не корректный. Второй и третий скрины это то, что из этого вытекает. Кто-нибудь сталкивался?? не знаете как лечить??
Изменено: Евгений Паршутин - 12.03.2025 16:12:11(изменил название темы)
Господа, я тут сделал фатальную ошибку с актив икс на листе, привязянными к нескольким ячейкам. Если конкретнее, то при коде прописанном на конкретные ячейки допер добавить пару строк В ТАБЛИЦУ выше.В результате весь макрос пошел по тому самому месту))) можно плс вопрос??, кто по неопытности делал также, и как боролись с этой напастью?)))
Снова здравствуйте, уважаемые. все клепаю свою табличку на макросах, заодно учусь)) столкнулся с неприятной проблемкой. есть макрос который по двум переменным определяет в какие ячейки записывать определенное значение(значение тоже зависит от переменных). ну как, почти дописанный макрос. переменные назначаются OptionButton. вот тут и выползла неприятность. т.к. при открытии книги, если OptionButton и так уже стояли в нужном положении макрос работает. но выводит значение 0 в заданные ячейки. путем не долгих копаний понял что хоть OptionButton и установлены, но значение переменных =0, т.к. не назначалось. Есть ли вариант программно воткнуть точки куда надо ( ну или просто куда-нибудь в пределах группы ) при открытии книги, с учетом того что и OptionButton на листе, и весь код в модуле листа?? и это не судите строго. поиском пользовался видать не правильно ищу.
Здравствуйте, опять бегу за советом к гуру)) есть простенький код.
Код
Private Sub OptionButton7_Click()
Rows(2).Hidden = False
Rows(6).Hidden = True
OptionButton1.Visible = 1
OptionButton2.Visible = 1
OptionButton3.Visible = 1
OptionButton4.Visible = 1
OptionButton5.Visible = 1
OptionButton6.Visible = 1
End Sub
Private Sub OptionButton8_Click()
Rows(2).Hidden = True
Rows(6).Hidden = False
OptionButton1.Visible = 0
OptionButton2.Visible = 0
OptionButton3.Visible = 0
OptionButton4.Visible = 0
OptionButton5.Visible = 0
OptionButton6.Visible = 0
End Sub
2 OptionButton одна скрывает строку с такими же OptionButton, и их самих, вторая показывает. Работает, одно но... после появления, или после открытия книги OptionButton с 1 по 6 становятся, как-бы это сказать не кликабельными. то-есть хоть укликайся точка не переезжает. проблема решается переходом в режим конструктора, и легким перемещением OptionButton. только как-бы это не решение. Подскажите куда копать??
Изменено: Евгений Паршутин - 26.02.2025 19:10:22(кусок кода, и так уже удаленный случайно оставил. фаил походу тоже в старой версии скинул, но там интересующая часть не тронута.)
И снова здравствуйте господа, возникла проблемка. как решить не понимаю, т.к. только учусь. есть 2 макроса, один стоит на активацию листа и заполняет комбобокс
Код
Private Sub Worksheet_Activate()
Dim s&
aCountry = Лист4.ListObjects("Заводы").DataBodyRange.Columns(3).Value
ComboBox1.MatchEntry = fmMatchEntryNone
With Лист1
s = .Cells(Rows.Count, 2).End(xlUp).Row
ComboBox1.List = aCountry
End With
End Sub
честно слизан с ваших примеров)), даже название переменной не менял. второй защищает книгу от изменения руками, опять же, подсмотрен тут...
Код
Private Sub Workbook_Open()
Dim wsSh As Object
For Each wsSh In Me.Sheets
Protect_for_User_Non_for_VBA wsSh
Next wsSh
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
wsSh.Protect Password:="1234", UserInterfaceOnly:=True 'при копировании убедится что стоит русская раскладка
End Sub
по отдельности работают отлично, а вот вместе... данные перестают подтягиваться в комбобокс, точнее подтянуть можно, но надо лезть в вба, и запускать в ручную. не подскажите где я накосячил??
Здравствуйте уважаемые. я задумал макрос, который будет брать данные из ячейки проводить с ними простейшие вычисления и вносить результат в туже ячейку, то есть брать введенное число из ячейки А1, скажем умножать его на 3, и получившиеся значение записывает обратно в А1. макрос простенький, с ним проблем не будет, а вот способ запуска, это интересно. Боюсь не получится ли у меня бесконечный цикл если пускать его по событию из ячейки А1?? и к сожалению ячеек с такой штукой будет много, поэтому прикручивать запуск на кнопку не вариант, а то одни кнопки вместо листа будут) подумав как это вообще провернуть, задумался а нельзя ли после запуска макроса по клику на ячейку сделать паузу до заполнения ячейки и перехода на другую?? а если можно подскажите плс какс примером сорри, еще не делал. да и если действительно в цикл пойдет, врят-ли вы мне спасибо скажите))