Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Не работает Cells.Replace
 
Код
Sub Замена()
     Cells.Replace What:="#ССЫЛКА!", Replacement:="Спецификация!", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

В книге меняется лист (удалятся одни и вставляется новый с таким же именем, но и после его замены естественно ломаются формулы ссылающиеся на него.
Проблема решается через найти и заменить - меняю ССЫЛКА на имя листа, попробовал повесить это на макрос, и макрос работает, но только до моменты пока файл открыт.
при последующем открытии - макрос не работает((
В чем может быть проблема?

Или можно как то иначе решить проблему, исправить формулы, что бы они ссылались на лист определенный лист, первый например,а не на имя, что бы при его удалении , формулы не ломались
Изменено: alexnf - 20.11.2022 18:24:53
Не работают кнопки активХ и программа на некоторых компьютерах, но не все
 
Как минимум на одном компьютере не работают кнопки АктивХ, если на нем попробовать вставить новую такую кнопку - пишет что вставка не осуществима
Так же не работают некоторые функции, например
If Not Intersect(Target, Sh.Range("$C$12:$C$29")) Is Nothing Then
не срабатывает - не выполняется при выделении ячейки из дапазона

В то же время срабатывает обычная кнопка и вызываемый ею макрос

На указанном компьютере вин 10, офис 2010
фалы с расширением .exd - удалял - не помогло
Изменено: alexnf - 19.11.2022 01:48:42
При копирование ячеек через буфер, копируются все листы!
 
Есть документ созданный в экселе 2010.
Копирую на первом листе ячейку и вставляю ее в другой документ - одновременно копируется такая же ячейка со второго листа и вставляется на следующий лист документа, в который производится копирование!
Где че нажато?
И еще при этом отключается автоматическое вычисление формул.
Изменено: alexnf - 07.02.2015 13:01:48
Ошибка 32809 при открытии файла на другом компьютере
 
Был файл с кучей макросов, создан изначально в excel 2003. С недавнего времени, все пользователи работающие с ним перешли на Excel 2010, было решено так же сохранить его в формате .xlsm. После сохранения и внесения некоторых изменений файл был перенесен на другой компьютер.
Теперь при попытке выполнения какого либо макроса в нем, выдает ошибку:
Run-time error '32809': Application-Defined or object-Defined error
На компьютере, на котором он сохранялся в формате  .xlsm - все работает без ошибок.
Перестали работать ToggleButton ActiveX
 
Был файл с ToggleButton -  все работало, а сегодня на одном компьютере перестало, не знаю после чего, может быть после обновления системы, ни каких приложений не ставилось и изменений в офис и виндовс не вносилось. Офис 2010. win7
Кнопка не работает, при наведении на нее курсор не меняется на руку.
При попытке вставить новую кнопку через меню Разработчик - вставить - Элемент ActiveX - Пишет "Вставка объекта не осуществима"
Помогите
Как скопировать лист в другую книгу с формулами как есть, без их изменения
 
Была формула:
=P35*Лист1!E31
в новой книге после копирования:
Код
Set ActiveWBK = ActiveWorkbook
Set NewWB = Workbooks.Open(openxlsb) 
ActiveWBK.Sheets("Лист1").copy After:=NewWB.Sheets(NewWB.Sheets.Count) 
 
, она становится вот такой:
=P39*'[Книга1.xls]Лист1'!E15
как правильно скопировать лист, чтобю формула не изменилась?
Как скопировать лист в другую книгу указанную при сохранении.
 
Нужно создать макрос при запуске которого открывался бы диалог открытия другой книги, и после ее выбора и открытия, в нее вставлялся лист из книги, из которой был вызван этот макрос.

Код
    Workbooks.Open Filename:="D:\Новый.xls" 'здесь надо вызвать диалог открытия файла, у него могут быть разные имена 
    Windows("Открытый.xls").Activate 'файл из которого вызван макрос
    Sheets("Лист1").copy After:=Workbooks("Новый.xls").Sheets("Лист1") , в новом файле уже есть такой лист, поэтому его надо заменить
 
а так же, подскажите как копировать лист, что бы формулы в нем не сохранили ссылки на листы старой книги, а использовали новую (в новом файле листы с такими же именами)
Помогите сделать разноцветный текст в выводимой форме
 
Выводится форма с текстом:

Код
    With LabelPrompt
        .Top = TextTop
        .ForeColor = &HFF
        .caption = Prompt1 + " " + Prompt2 + " " + Prompt3
        .AutoSize = False
        .Width = GetSystemMetrics(0) * 0.44
        .AutoSize = True
        Me.Width = .Left + .Width + 10
        If .Height < 16 Then .Height = 16
    End With
 
Переменные Promt1-3 - это текст, который нужно сделать разноцветным, те каждый текст своего цвета и при этом все должно быть одним предложением.
сейчас вся надпись красная ( .ForeColor = &HFF)

А так же попутно, подскажите как вместо пробела " ", поставить переход на новую  строку
Изменено: alexnf - 17.02.2014 11:21:16
Можно ли выделить цветом ячейки с формулами массива?
 
Есть таблица прайс-листа, при выборе из подбора позиции в одной колонке, в другую макрос подставляет формулу цены этой позиции.
Подставляемая формула является формулой массива.
Пользователь иногда меняет эту формулу на постоянную цифру или редактирует, не нажав при выходе из нее ctrl+shift+enter
Хочу сделать выделение цветом ячеек, в которых формула - не является формулой массива.
Можно ли это сделать условным редактированием?, если нет то может подскажите, как это сделать в VBA
EXCEL 2003!
Изменено: alexnf - 12.02.2014 10:48:33
Запрет выполнения макроса выключателем ToggleButton, Помогите найти наиболее простой способ.
 
Нужно выключателем ToggleButton отключать выполнение действия вызываемого следующими командами
Код
   If Not Intersect(Target, Sh.Range("$a$53:$a$63")) Is Nothing Then   
         ,если выделена ячейка из указанного интервала, выполняем некие действия.
   End If 
 
   If Not Intersect(Target, Sh.Range("$b$53:$b$63")) Is Nothing Then   
         ,если выделена ячейка из указанного интервала, выполняем некие действия.
   End If
  
   If Not Intersect(Target, Sh.Range("$c$53:$c$63")) Is Nothing Then   
         ,если выделена ячейка из указанного интервала, выполняем некие действия.
   End If
 
 .........
Вижу только вариант изменения значения переменной - переключателем и вставкой проверки значения этой переменной перед запуском действия.
Дело в том, что диапазонов и соответственно действий - много, поэтому прошу подсказать наиболее простой способ.
Функция для сокращения кода
 
Есть кусок часто повторяющегося кода, переход на конкретный лист и проверка текущего значения на заполненность с запросом на перезапись, хочу вынести его в функцию:
Код
Sheets("Лист1").Select 
If ActiveCell.Value = "" Then
  Else
     RunMacro = MsgBox("Заменить?", 4, "")
     If RunMacro <> 6 Then 
     Exit Sub
     End If
End If


но если делаю вот так:

Код
Private Sub ....
...
pusto
...
End Sub

Function pusto()
Sheets("Лист1").Select 
If ActiveCell.Value = "" Then
  Else
     RunMacro = MsgBox("Заменить?", 4, "")
     If RunMacro <> 6 Then 
     Exit Sub
     End If
End If
End Function

то вылазит ошибка, что нельзя использовать    Exit Sub в функции

Как это можно обойти?
Не могу вывести текст на UserForm
 
на форме по нажатию кнопки надо вывести текст
Текст - это значение переменной взятое из ячейки
Код
Private Sub CommandButton1_Click()
On Error Resume Next
Dim Prais
Prais = Range("Лист1!R10C2" ;) .Value
Label4 = Prais
End Sub

Ничего не выводит, в чем ошибка?
Выделение диапазона относительно активной ячейки
 
Нужно при выделении определенной ячейки, выделить следующие 5, и объединить или отменить выделение.
Выделяю вот так:
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Лист1" Then
If Not Intersect(Target, Sh.Range("$b$12:$b$21")) Is Nothing Then  
Range(ActiveCell, ActiveCell.Offset(0, 5)).Select
End If
End If
End Sub


Если ячейки не объединены, то все выделяется правильно, а если нет, то выделяется 6 ячеек после объединенной - а надо что бы в таком случае выделялась только она одна (состоящая из нескольких)
Все видно в файле
Как исправить?
Помогите сократить формулу с функцией ВПР
 
Несколько вопросов:
1.Подбираю функцией ВПР значение из таблицы с 3-мя колонками значений, Вот что получилось:
=ЕСЛИ(ЕОШИБКА(ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!A3:B102"  ;)  ;2;ЛОЖЬ))=ИСТИНА;0;ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!A3:B102"  ;)  ;2;ЛОЖЬ))+ЕСЛИ(ЕОШИБКА(ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!D3:E102"  ;)  ;2;ЛОЖЬ))=ИСТИНА;0;ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!D3:E102"  ;)  ;2;ЛОЖЬ))+ЕСЛИ(ЕОШИБКА(ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!G3:H102"  ;)  ;2;ЛОЖЬ))=ИСТИНА;0;ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!G3:H102"  ;)  ;2;ЛОЖЬ))+ЕСЛИ(ЕОШИБКА(ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!J3:K102"  ;)  ;2;ЛОЖЬ))=ИСТИНА;0;ВПР(A4;ДВССЫЛ("'"&$A$1&"'"&"!J3:K102"  ;)  ;2;ЛОЖЬ))
Фактически ищу в каждой колонке, если не нахожу ставлю ноль и потом все складываю.
Можно ли как то это упростить?

нужна именно формула

Вопросы удалил. Один вопрос - одна тема. [МОДЕРАТОР]
Присвоить переменной значение из Combo box UserForm
 
В "Эта книга" объявляю глобальную переменную и вызываю форму :
Код
Public form As String

If ........
         UserForm1.Show
         MsgBox "Значение переменной form: " & form, vbInformation '  Здесь нет значения переменной!


В UserForm есть список Combo box, значение которого хочу присвоить переменной form при нажатии кнопки:

Код
Private Sub CommandButton1_Click()

     form = ComboBox1.Value
         
   MsgBox "Значение переменной form: " & form, vbInformation ' Здесь выводится значение комбобокса!

  UserForm1.Hide

End Sub


MsgBox - поставил для контроля значения пременной.

Почему после закрытия UserForm обнуляется значение переменной?
Копирование значения ячейки макросом в Excel 2003
 
Target.Copy  'копирую выделенную ячейку
Sheets("Лист1").Select ' открываю лист1
ActiveSheet.Paste 'Вставляю скопированное

Все хорошо, но мне надо вставить только значение, тк копируемое значение может быть в объединенных ячейках и тогда вставляется эта объединенная ячейка, а так же вставляется формат, который мне тоже не нужен
Ввод данных на лист с другого листа, Подбор из прайса в спецификацию без "Проверки" и "Списков"
 
Нужно при нажатии на определенное поле листа1 (строка спецификации) открыть лист2 со списком позиций и скопировать от туда значение обратно на лист спецификации.

Сам сделал так:
на листе спецификации при выборе ячейки из определенного массива вызываю функцию открытия листа2
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Adres As String
If Not Intersect(Target, Range("$b$12:$g$29"  ;)  ) Is Nothing Then
Call Module1.Open_niz
End If
End Sub


Код
Sub Open_niz()
Sheets(Sheets("Спецификация").Cells(6, 4).Value).Select
MsgBox "Выбирите элемент", vbSystemModal, ""
End Sub


На листе2 так же при выборе ячейки, копирую ее, открываю снова спецификацию и вставляю.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Adres2 As String
 If Not Intersect(Target, Range("$a$1:$a$100")) Is Nothing Then
 Adres2 = ActiveCell.Address
 Call Module1.past_in_spec
  End If
 End Sub

Код
Sub past_in_spec()
Dim Target As Range
Selection.Copy
Sheets("Спецификация").Select
ActiveSheet.Paste
MsgBox "Элемент вставлен", vbSystemModal, ""
End Sub


Функция ВПР подставляет цену

Вопрос
Можно ли это все сделать одним макросом, что бы проверку диапазона и копирование данных с последующей вставкой, не нужно было писать в каждом листе.
Т. е. Выбираю лист с которого буду вставлять данные в ячейке "D6" в спецификации, затем выбираю ячейку в которую надо вставить данные - при этом открывается выбранный в "D6" лист, на нем кликаю по ячейке с данными, если эти данные из правильного диапазона, то этот лист закрывается и данные вставляются в спецификацию. При этом, если я просто открою лист с данными и буду выбирать там ячейки, то они никуда вставляться не будут.


Офис 2003!

Списком и Проверкой пользоваться не могу, тк листов с позициями несколько (25), на каждом много разных позиций (более 2000) - в общем пробовал делать - пользоваться крайне неудобно.
Изменено: alexnf - 24.10.2013 16:13:29
Страницы: 1
Наверх