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

Вход

Регистрация

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

 

= Мир MS Excel/Правка макроса (constant expression required) - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Правка макроса (constant expression required)
Leojse Дата: Понедельник, 21.07.2014, 21:10 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 1 ±
Замечаний: 0% ±

2010/2013
Добрый вечер, уважаемые форумчане!
Стыдно уже писать на форуме, но пока не вижу для себя другого выхода.
Пытаюсь из двух столбцов с помощью макроса в столбец G вывести значения, которые отсутствуют в столбцах А и В. В примере диапазон ограничивается от 1 до 16. Но диапазон "от" и "до" постоянно меняется. Можно, вообщем-то прописывать этот диапазон каждый раз вручную, правя код, но хочется узнать, возможно ли с помощью InputBox вводить значение "от" и значение "до" при каждом запуске макроса? Также, хочу спросить, возможно ли, чтобы результат вносился в столбец G не с первой ячейки?
Попытался сам что-то сделать, но ничего не получилось. Выделяет переменную b и пишет "constant expression required".
И, как обычно, заранее спасибо и много "+"!
К сообщению приложен файл: 7109334.xls (36.0 Kb)
 
Ответить
СообщениеДобрый вечер, уважаемые форумчане!
Стыдно уже писать на форуме, но пока не вижу для себя другого выхода.
Пытаюсь из двух столбцов с помощью макроса в столбец G вывести значения, которые отсутствуют в столбцах А и В. В примере диапазон ограничивается от 1 до 16. Но диапазон "от" и "до" постоянно меняется. Можно, вообщем-то прописывать этот диапазон каждый раз вручную, правя код, но хочется узнать, возможно ли с помощью InputBox вводить значение "от" и значение "до" при каждом запуске макроса? Также, хочу спросить, возможно ли, чтобы результат вносился в столбец G не с первой ячейки?
Попытался сам что-то сделать, но ничего не получилось. Выделяет переменную b и пишет "constant expression required".
И, как обычно, заранее спасибо и много "+"!

Автор - Leojse
Дата добавления - 21.07.2014 в 21:10
_Boroda_ Дата: Понедельник, 21.07.2014, 21:34 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16913
Репутация: 6617 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Если Вы хотите именно этот макрос, то его можно переделать так
[vba]
Код
Sub Numbers()
Dim a, b
Dim Num() As Boolean, RA As Range, n&, r&, r0&
On Error Resume Next
a = InputBox("Введите начальное число", "Ввод первого числа")
b = InputBox("Введите конечное число", "Ввод второго числа")
ReDim Num(a To b)
On Error Resume Next
For Each RA In Selection
       Num(RA.Value) = True
Next
r0 = 5'Начальная строка
For n = LBound(Num) To UBound(Num)
       If Num(n) = False Then r = r + 1: Cells(r + r0-1, "G") = n
Next
Erase Num
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли Вы хотите именно этот макрос, то его можно переделать так
[vba]
Код
Sub Numbers()
Dim a, b
Dim Num() As Boolean, RA As Range, n&, r&, r0&
On Error Resume Next
a = InputBox("Введите начальное число", "Ввод первого числа")
b = InputBox("Введите конечное число", "Ввод второго числа")
ReDim Num(a To b)
On Error Resume Next
For Each RA In Selection
       Num(RA.Value) = True
Next
r0 = 5'Начальная строка
For n = LBound(Num) To UBound(Num)
       If Num(n) = False Then r = r + 1: Cells(r + r0-1, "G") = n
Next
Erase Num
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 21.07.2014 в 21:34
Leojse Дата: Понедельник, 21.07.2014, 21:41 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 1 ±
Замечаний: 0% ±

2010/2013
_Boroda_, спасибо Вам огромное! А можно чисто теоретический вопрос? Можно в одном окне InputBox вводить сразу 2 значения?
[offtop]Я только сейчас начал основательно вникать во всё это... Имею ввиду процедуры, методы, классы, свойства, и т.д. И откуда Вы всё это знаете?)
 
Ответить
Сообщение_Boroda_, спасибо Вам огромное! А можно чисто теоретический вопрос? Можно в одном окне InputBox вводить сразу 2 значения?
[offtop]Я только сейчас начал основательно вникать во всё это... Имею ввиду процедуры, методы, классы, свойства, и т.д. И откуда Вы всё это знаете?)

Автор - Leojse
Дата добавления - 21.07.2014 в 21:41
_Boroda_ Дата: Понедельник, 21.07.2014, 21:51 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16913
Репутация: 6617 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Можно в одном окне InputBox вводить сразу 2 значения?

Например, так можно
[vba]
Код
Sub Numbers()
Dim a, b, aa
Dim Num() As Boolean, RA As Range, n&, r&, r0&
On Error Resume Next
aa = InputBox("Введите начальное и конечное числа через запятую")
a = Int(--aa)
b = WorksheetFunction.Substitute(aa - a, "0,", "")
ReDim Num(a To b)
On Error Resume Next
For Each RA In Selection
        Num(RA.Value) = True
Next
r0 = 5
For n = LBound(Num) To UBound(Num)
        If Num(n) = False Then r = r + 1: Cells(r + r0, "G") = n
Next
Erase Num
End Sub
[/vba]
И откуда Вы всё это знаете?

Это почти как у Сократа: чем больше я знаю, тем больше я понимаю, что знаю очень мало.
Где-то когда-то вычитал (вольная цитата): знание - это шар, чем он больше, тем у него больше площадь соприкосновения с неведомым.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Можно в одном окне InputBox вводить сразу 2 значения?

Например, так можно
[vba]
Код
Sub Numbers()
Dim a, b, aa
Dim Num() As Boolean, RA As Range, n&, r&, r0&
On Error Resume Next
aa = InputBox("Введите начальное и конечное числа через запятую")
a = Int(--aa)
b = WorksheetFunction.Substitute(aa - a, "0,", "")
ReDim Num(a To b)
On Error Resume Next
For Each RA In Selection
        Num(RA.Value) = True
Next
r0 = 5
For n = LBound(Num) To UBound(Num)
        If Num(n) = False Then r = r + 1: Cells(r + r0, "G") = n
Next
Erase Num
End Sub
[/vba]
И откуда Вы всё это знаете?

Это почти как у Сократа: чем больше я знаю, тем больше я понимаю, что знаю очень мало.
Где-то когда-то вычитал (вольная цитата): знание - это шар, чем он больше, тем у него больше площадь соприкосновения с неведомым.

Автор - _Boroda_
Дата добавления - 21.07.2014 в 21:51
Skif-F Дата: Понедельник, 21.07.2014, 21:53 | Сообщение № 5
Группа: Проверенные
Ранг: Участник
Сообщений: 73
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007, 2010, 2013, 2016
Можно ввести значения, например, через какой-то разделитель (слэш, пробел, запятая, точка с запятой - как Вам удобнее), а потом программно разделить полученную строку на 2 значения:
[vba]
Код
Sub Numbers()
     Dim a, b, c As String
     Dim Num() As Boolean, RA As Range, n&, r&, r0&
     c = InputBox("Введите два числа через косую черту" & vbCr & "Например: 2/3", "Ввод чисел")
     a = CInt(Left(c, InStr(1, c, "/") - 1))
     b = CInt(Right(c, Len(c) - InStr(1, c, "/")))
     ReDim Num(a To b)
     On Error Resume Next
     For Each RA In Selection
         Num(RA.Value) = True
     Next
     r0 = 5 'Начальная строка
     For n = LBound(Num) To UBound(Num)
         If Num(n) = False Then r = r + 1: Cells(r + r0 - 1, "G") = n
     Next
     Erase Num
End Sub
[/vba]
 
Ответить
СообщениеМожно ввести значения, например, через какой-то разделитель (слэш, пробел, запятая, точка с запятой - как Вам удобнее), а потом программно разделить полученную строку на 2 значения:
[vba]
Код
Sub Numbers()
     Dim a, b, c As String
     Dim Num() As Boolean, RA As Range, n&, r&, r0&
     c = InputBox("Введите два числа через косую черту" & vbCr & "Например: 2/3", "Ввод чисел")
     a = CInt(Left(c, InStr(1, c, "/") - 1))
     b = CInt(Right(c, Len(c) - InStr(1, c, "/")))
     ReDim Num(a To b)
     On Error Resume Next
     For Each RA In Selection
         Num(RA.Value) = True
     Next
     r0 = 5 'Начальная строка
     For n = LBound(Num) To UBound(Num)
         If Num(n) = False Then r = r + 1: Cells(r + r0 - 1, "G") = n
     Next
     Erase Num
End Sub
[/vba]

Автор - Skif-F
Дата добавления - 21.07.2014 в 21:53
Leojse Дата: Понедельник, 21.07.2014, 21:55 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 1 ±
Замечаний: 0% ±

2010/2013
Skif-F, Большое спасибо!!!


Сообщение отредактировал Leojse - Понедельник, 21.07.2014, 21:56
 
Ответить
СообщениеSkif-F, Большое спасибо!!!

Автор - Leojse
Дата добавления - 21.07.2014 в 21:55
Leojse Дата: Понедельник, 21.07.2014, 21:57 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 1 ±
Замечаний: 0% ±

2010/2013
_Boroda_, И Вам преогромнейшее спасибо еще раз!)
 
Ответить
Сообщение_Boroda_, И Вам преогромнейшее спасибо еще раз!)

Автор - Leojse
Дата добавления - 21.07.2014 в 21:57
  • Страница 1 из 1
  • 1
Поиск:

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