Страницы: 1
RSS
Указать диапазон работы макроса с помощью msgbox
 
Здравствуйте, прошу прощения если повторяюсь, но в поиске ничего не нгашлось((((  
в макросе указан определенный диапазон с которым он работает,    
 
ActiveSheet.Range("A1:G1")  
 
но на разных листах, таблица разные  
 
как с помощью msgbox указывать диапозон работы макроса&
 
Set rg = Application.InputBox _  
            ("...", "Ввод результата", , Type:=8)
Я сам - дурнее всякого примера! ...
 
С помощью Msgbox муторно будет :) Т.е. можно, но практически нереально.  
А вот с помощью Inputbox легко:  
 
Set rr = Application.InputBox(prompt:="Select a range on this worksheet", Type:=8)  
For Each Cell In rr  
If Cell.HasFormula = False Then Cell.Value = ""  
Next
 
Например, получение в переменную MyColor значения Interior.ColorIndex из указываемой мышкой ячейки:  
 
Sub Set_Color()   ' использование Application.InputBox для ссылок на ячейки  
  ' http://www.planetaexcel.ru/forum.php?thread_id=14184  
  Dim MyColor As Integer  
  With Application  
     .DisplayAlerts = False: On Error Resume Next  
     MyColor = .InputBox("Укажите ячейку с образцом цвета заливки", "Выбор цвета", Type:=8).Interior.ColorIndex  
     .DisplayAlerts = True: On Error GoTo 0  
  End With  
  ActiveCell.Interior.ColorIndex = MyColor  
End Sub
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Спасибо всем за ответы, но чего то у меня не получается сюда прикрутить...  
 
Sub PrintAutoFilter()  
   Dim NonDupes As New Collection  
   Dim li As Long  
Application.ScreenUpdating = False  
   If ActiveSheet.AutoFilterMode = False Then _  
 
      ActiveSheet.Range("A1:G1").AutoFilter  
 
 
   On Error Resume Next  
   For li = 2 To ActiveSheet.UsedRange.Rows.Count  
       If Cells(li, 1).Value <> "Итог" And Cells(li, 1).Value <> "" Then _  
          NonDupes.Add Cells(li, 1).Value, CStr(Cells(li, 1).Value)  
   Next  
   On Error GoTo 0  
   For Each Item In NonDupes  
       ActiveSheet.UsedRange.AutoFilter Field:=1, Criteria1:=Item  
       ActiveWindow.SelectedSheets.PrintOut Copies:=1  
   Next  
ActiveSheet.UsedRange.AutoFilter  
Application.ScreenUpdating = True  
End Sub
 
{quote}{login=Hugo}{date=18.08.2010 12:57}{thema=}{post}С помощью Msgbox муторно будет :){/post}{/quote}  
А как это вообще - с помощью MsgBox указать диапазон?
 
{quote}{login=Юрий М}{date=18.08.2010 01:38}{thema=Re: }{post}{quote}{login=Hugo}{date=18.08.2010 12:57}{thema=}{post}С помощью Msgbox муторно будет :){/post}{/quote}  
А как это вообще - с помощью MsgBox указать диапазон?{/post}{/quote}  
А чего тут непонятного:  
Msgbox("Range("A1:G1")")  
И совсем не муторно:-)
Я сам - дурнее всякого примера! ...
 
Юрий, всё построено на 0/1 :)  
Только очень много раз надо вопрос задавать - "Вы хотите выбрать столбец А?" и т.д. :)
 
Да не msgbox не самоцель можно и с помощью  Inputbox,  
надо обним словом надо чтобы макрос указанным мной выше перед тем как работать спросил диапазон...
 
{quote}{login=Hugo}{date=18.08.2010 01:48}{thema=}{post}Только очень много раз надо вопрос задавать - "Вы хотите выбрать столбец А?" и т.д. :){/post}{/quote}  
:-)
 
{quote}{login=ve-nick}{date=18.08.2010 02:01}{thema=}{post}надо обним словом надо чтобы макрос указанным мной выше перед тем как работать спросил диапазон...{/post}{/quote}  
Вам же ответили: Application.InputBox
 
Странно, автор просил указать диапазон, а не ввести, один Игорь правильно ответил :)  
 
Или так, вставте где это необходимо.  
-----------  
Msgbox "Диапазон работы макроса: "A1:G1"", 64  
-----------
<FONT COLOR="CadetBlue">
 
Дъмитръ, "Указать диапазон работы макроса", а не "Проинформировать пользователя..."  
Т.е. указать макросу, с каким диапазоном работать.  
Ещё одна цитата: "надо чтобы макрос указанным мной выше перед тем как работать спросил диапазон"  
Не вносите сумятицу.
 
Сергей первый ответил. Я писал много...
 
Application.InputBox("...", "...", Type:=8) ГЛЮЧИТ если на листе есть условное форматирование с формулой  
Я в код не вчитывался, но похоже, что ve-nick хочет уникальные значения из задаваемого юзером диапазона выбирать?  
Сейчас уже некогда, а завтра с утра если надо, то вытащу из своего Personal.xls формочку и макрос для подсчёта/вывода уникальных значений...
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Вот, глянь.  
Там комментарии есть. Сам разберёшься? Если нет, то ответы на вопросы будут завтра.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Спасибо всем за помощь, но чего то так и не вкручивается в макрос...  
видимо отвертка у меня крестовая, вместо плоской (в смысле руки кривые)  
 
Alex_ST, отдельное спасибо за макрос, но это немного не то, что делает мой...  
мой макрос берет первый столбец автофильтром выбирает первое уникальное значение и отпровляет полученную табличку на принтер, затем берет второе и тоже табличку на принтер и т.д.  
работает макрос исправно, за исключением того что он фильтрует исключительно по ячейке A1 поэтому если таблица расположена где-то в другом месте приходится залезать в макрос и править, вот я и подумал что можно туда приделать какой нибудь InputBox чтобы он перед тем как фильтровать и печатать спрашивал, где табличка находится... но что-то у меня все не выходит...  
вроде вставил InputBox в него, но после того как я указываю диапазон, он сразу же заканчивает работу и ничего не печатает...  
как же быть???
 
Вставте:  
-----------------  
Dim rr    
Set rr = Application.InputBox(prompt:="Select a range on this worksheet", Type:=8)  
-----------------  
 
после:  
-----------------  
Dim li As Long  
-----------------  
 
А вместо этого:  
-----------------  
ActiveSheet.Range("A1:G1").AutoFilter  
-----------------  
 
вот это:  
-----------------  
ActiveSheet.Range(rr).AutoFilter  
-----------------
<FONT COLOR="CadetBlue">
 
Там ещё и в цикле надо тогда другие - выбранные ячейки анализировать. Это чуть сложнее переделать, так сразу не видно... rr.Column.(1) что-ли...
 
rr.Columns(1)  
так
 
Попробуй прикрутить  
If Cells(li, rr.Columns(1).Column).Value <> "Итог"
 
Что-то мне подсказывает, ребятки, что автору и нафиг не нужен этот инпутбокс. Лишний мутор. Ему ИМХО нужно на каждом листе определить размер и расположение таблицы.  
Веник, я прав? Это можно сделать прогаммно, без вмешательсва кривых рук пользователя.
Я сам - дурнее всякого примера! ...
 
Дъмитръ спасибо, но после сборки ругается на    
Dim li As Long (((  
 
Hugo, вам тоже спасибо, но видимо там еще чего-то не видно, задача оказалась сложнее чем я расчитывал, обидно по ходу легче заходить макрос вручную и править...  
 
KuklP, возможен вариант и с программынм поиском таблицы, но в этом случае макрос будет работать исключительно по первому столбцу, а я все же планировал указывать диапазон в ктотром первым будет столбец необходимый мне...
 
ve-nick, лучше бы пример показали, а то мало ли какие еще могут быть ошибки, а так же лишнее вопросы отпали.  
 
P.S. Например, мне тяжело понять макрос без примера.
<FONT COLOR="CadetBlue">
 
Вот... надеюсь это чем-нибудь поможет...
 
Держите.
<FONT COLOR="CadetBlue">
 
Мне казалось, что таблица может быть не в A-C, а например на 5 колонок правее.  
Тогда Cells(li, 1).Value <> "Итог" всегда...
 
Дъмитръ, Спасибо Огромное!!!! - это то что мне и предстовлялось!!!!  
Сам бы никогда не докрутил!!!!  
Всем спасибо за участие, тема закрыта!!!
Страницы: 1
Наверх