Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA

Модерирует : ShIvADeSt

ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

   

RUSmafia



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов

  • Всего записей: 556 | Зарегистр. 31-07-2002 | Отправлено: 21:40 14-10-2004 | Исправлено: lucky_Luk, 20:44 13-04-2007
    Pantera3587

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочу усовершенствовать свой предыдущий макрос ГПР. Выделяю любую активную ячейку, в которой появляется значение равное  str, затем после нажатия ок выделяется следующая ячейка, которая располагается рядом с выделенной (ActiveCell.Offset(0, 1).Select), потом после введения номера строки выполняется функция ГПР. Вопрос: можно ли в этой функции сделать так, чтобы после скобки шла ссылка на первую выделенную активную ячейку, т.е. если я выделяю ячейку Е2, то функция имела бы вид после выполнения макроса
    =ГПР(E2;$A:$C;2;ЛОЖЬ)
    если я выделяю ячейку F4, то такой
    =ГПР(F4;$A:$C;2;ЛОЖЬ)
     
    Попыталась сделать, но мне выдается следующая формула
    =ГПР(0;$A:$C;2;ЛОЖЬ)
     
    Вот мой как бы усовершенствованный макрос
     
    Sub МакросГПР2()
     
    ' Макрос записан 30.10.2006 (DIREKTOR)
     
        Dim str As String
        Dim i As Integer
        Dim j As Integer
        Dim c As Variant
        Dim nr As Variant
         
        str = InputBox("Введите заголовок столбца: ") 'появляется диалоговое окно в поле
        'которого либо вводится слово Дата, либо вводится слово Клиент, либо вводится слово Сумма
     
        ActiveCell.Select
        ActiveCell.Formula = str  
     
        'выделение рядом стоящей ячейки
        ActiveCell.Offset(0, 1).Select
             
        i = ActiveCell ' здесь вроде как присваивается переменной выделенная первой активная ячейка, выделенная первой
     
        'появляется диалоговое окно в поле
        'которого  вводится любой номер строки, т.е. любая цифра
     
        nr = InputBox("Введите номер строки: ")
     
       'здесь используется функция ГПР
        ActiveCell.FormulaR1C1 = "=HLOOKUP(" & i & ",C1:C3," & nr & ",FALSE)"
         
     
    End Sub

    Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 17:52 31-10-2006 | Исправлено: Pantera3587, 17:56 31-10-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pantera3587

    Цитата:
    ActiveCell.Offset(0, 1).Select
    i = ActiveCell ' здесь вроде как присваивается переменной выделенная первой активная ячейка, выделенная первой  

    После того, как Вы выделили другую ячейку методом Select, эта ячейка стала ActiveCell. В переменную i записывается значение в новой ячейке. Если Вам нужен адрес 1-й ячейки используйте i=ActiveCell.Address. Перед Select!
    Подставляйте эту переменную (i) в ГПР так же, как Вы делаете с nr, использую конкатенацию строк (&).
     
    Да, по умолчанию свойство Address возвращает абсолютный адрес, типа $A$1. Если нужно это изменить, используйте
    Код:
    ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)


    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 19:36 31-10-2006
    Pantera3587

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
     
    Сделала, только не знаю, правильно ли, т.к. после нажатия кнопки ок в первом диалоговом окне выдает ошибку: Run-Time "91": object variable or With block variable not set.
    Что не так?
    Sub МакросГПР2()
     
        Dim str As String
        Dim i As Range
        Dim nr As Variant
         
        str = InputBox("Введите заголовок столбца: ")      
        i = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
        ActiveCell.Select
        ActiveCell.Formula = str      
           
        ActiveCell.Offset(0, 1).Select  
        nr = InputBox("Введите номер строки: ")
       
        ActiveCell.FormulaR1C1 = "=HLOOKUP(" & i & ",C1:C3," & nr & ",FALSE)"
         
    End Sub
     
    Кто знает как изменить выделение ячейки с черного цвета на красный?

    Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 17:03 01-11-2006 | Исправлено: Pantera3587, 17:06 01-11-2006
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pantera3587
     ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False) - возвращает строковое значение типа "A1", присвоение интерфейсу i (Range) и вызывает ошибку

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 20:22 01-11-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pantera3587
    Проблем несколько. Одна, как уже упомянул AndVGri в несоответствии типа переменной i.  Это почему у вас Run-Time ошибка. Другая - формула должна подставляться через свойство .Formula, а не .FormulaR1C1.

    Код:
    Dim i As String
    ...
    ActiveCell.Formula = "=HLOOKUP(" & i & ",C1:C3," & nr & ",FALSE)"
     

    И еще. Вы уверены, что вам нужна формула HLOOKUP (ГПР), а не VLOOKUP (ВПР)?

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 22:42 01-11-2006
    Pantera3587

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Поменяла Range на Variant и исправила на .Formula. Все заработало. Спасибо тебе иAndVGri.  

    Цитата:
    Вы уверены, что вам нужна формула HLOOKUP (ГПР), а не VLOOKUP (ВПР)?  

    Просто изучала эту функцию и мне надоело каждый раз менять в формуле номер строки и исходное значение. Вот и подумала, что это можно как-то усовершенствовать. По моему получилась неплохая штука. Этот вариант можно наверное применить и к ВПР. Надо попробовать.
    Еще раз спасибо за помощь!
     
     
     
     
     
    Добавлено:
    Yuk
    Попробовала вместо ГПР использовать ВПР. Работает. Но есть одна проблема, если в искомой ячейке стоит дата, то выдает Н/Д, но стоит поменять ячейку с датой на формат ячейки текстовый в исходной таблице, как все работает. Попробовала в макросе переменной str присвоить Date, тогда макрос  работает.
    Можно ли как то сделать так, чтобы в  первом диалоговом окне можно было набирать и текст, и число и дату? Вариант Dim str As Variant не проходит для даты.
     
    И еще вопрос? Когда мы выделяем ячейку, то она выделяется черной рамкой. Как можно сделать так, чтобы она выделялась не черным, а допустим красным цветом? В настройках я нигде не нашла этого.

    Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 15:13 02-11-2006
    sonix555



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk, спасибо за Microsoft Date and Time Picker Control. То что нужно
     
     
    Добавлено:
    Рано обрадовался
    До закрытия книги компонент работает нормально, вернее с ним ничего не происходит. После повторного открытия книги, на его месте сначала появляется красный крест (на всю ширину предыдущего размера), а потом меняет свою форму на квадрат
    В чем дело?

    Всего записей: 8 | Зарегистр. 03-07-2006 | Отправлено: 18:34 02-11-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sonix555
    У меня то же самое. Нашел, что вроде надо установить сервис пак 2 для офиса. Сам не пробовал.
    Также помогает вот такой код:
    Код:
    Private Sub Workbook_Open()
    Sheets("Sheet1").Activate
    ActiveSheet.Shapes("DTPicker1").Select
    Selection.ShapeRange.ScaleHeight 1.05, msoFalse, msoScaleFromTopLeft
    Range("A1").Select
    End Sub

     
    Pantera3587

    Цитата:
    Когда мы выделяем ячейку, то она выделяется черной рамкой. Как можно сделать так, чтобы она выделялась не черным, а допустим красным цветом? В настройках я нигде не нашла этого.

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

    Цитата:
    если в искомой ячейке стоит дата, то выдает Н/Д, но стоит поменять ячейку с датой на формат ячейки текстовый в исходной таблице, как все работает.

    У меня работате с Variant. Если значения в таблице - дата, ввожу дату. Если в таблице дата в виде текста, ввожу сначала одинарную кавычку, затем дату в точно таком же формате. Никаких проблем.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 23:13 02-11-2006
    sonix555



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня без сервис пака вооще не работает (только крест и все). Со вторым сервисом работает, но меняется форма.
    Код помог спасибо

    Всего записей: 8 | Зарегистр. 03-07-2006 | Отправлено: 12:13 03-11-2006
    Deni005



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет!
    Есть такая проблемка.
    Есть готовая прога, но немного неправильная! В ней заместо того чтобы установить защиту только на ячейки, защита ставится и на ячейки и на кнопки. В чем может быть косяк не пойму! Может кто знает как сделать так чтобы защита ставилась только на ячейки, а кнопки работали!
    Кто сможет помочь, прогу скину на ящик. Заранее благодарен!

    Всего записей: 742 | Зарегистр. 03-02-2006 | Отправлено: 18:12 03-11-2006
    Pantera3587

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk

    Цитата:
    В принципе могу написать макрос, чтобы при изменении выделения, изменялся цвет рамки. Но это может привести к небольшим тормозам при навигации по листу.  

     
    Если не жалко, то пришли пожайлуста код

    Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 19:28 03-11-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pantera3587
    В код Книги:

    Код:
    Public cursel As Range
     
    Private Sub Workbook_Open()
    Set cursel = Selection
    cursel.BorderAround _
        LineStyle:=xlContinuous, _
        Weight:=xlThick, _
        ColorIndex:=8
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    If cursel Is Nothing Then
        Set cursel = Selection
    End If
    For b = 1 To 4
        With cursel.Borders(b)
            .Weight = xlThin
            .ColorIndex = xlColorIndexAutomatic
            .LineStyle = xlNone
        End With
    Next b
    Target.BorderAround _
        LineStyle:=xlContinuous, _
        Weight:=xlThick, _
        ColorIndex:=8
    Set cursel = Target
    Application.ScreenUpdating = True
    End Sub

     
    Кроме замедления работы, есть еще одно неудобство. Каждое перемещение курсора означает изменение, то есть при закрытии книги будет запрос на сохранение, даже если изменения на самом деле не вносились.
     
    И еще. Если Weight:=xlThick, у меня происходит небольшое изменение высоты выделенной ячейки, такой эффект "дерганья". Можно заменить на Weight:=xlThin, но тогда цвет не такой явный.
     
    В общем, играйтесь. Лично я реального практического применения не вижу.
     

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 22:12 03-11-2006 | Исправлено: Yuk, 22:17 03-11-2006
    Troitsky



    Водник Водкин
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Переключение раскладки на русскую если в данный момент раскладка английская средствами WinAPI:

    Код:
    Private Declare Function GetKeyboardLayoutName Lib "user32" _
    Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
     
    Private Declare Function ActivateKeyboardLayout Lib "user32" _
    (ByVal HKL As Long, ByVal flags As Long) As Long
     
     
    Sub ChangeKeyboardLayout()
      Dim KeybLayoutName As String
      KeybLayoutName = String(9, 0)
      GetKeyboardLayoutName KeybLayoutName
      '409 - английская,
      '419 - русская
      'Переключение раскладки на русскую если в данный момент раскладка английская
      If Val(CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1)))) = 409 Then
          ActivateKeyboardLayout 0, 0
      End If
    End Sub
     



    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 10:28 04-11-2006
    Antananarivu

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Troitsky
    Спасибо большое за программу... но я вообще чайник в этом деле... Это надо куда написать? Открыть Редактор VBA, копировать туда... а потом что... Понимаю, что вопрос глупый... но времени нет самому разбираться... а надо до вторника поставить...

    Всего записей: 151 | Зарегистр. 10-10-2006 | Отправлено: 10:39 04-11-2006
    Troitsky



    Водник Водкин
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Antananarivu

    Цитата:
    Это надо куда написать? Открыть Редактор VBA

    Добавить модуль, туда скопировать код.
    А на событие Workbook_Open текущей книги (ЭтаКнига) повесить вызов процедуры смены раскладки:
    Код:
    Private Sub Workbook_Open()
      ChangeKeyboardLayout
    End Sub

    Таким образом при открытии этой книги всегда раскладка будет переключаться на русскую.
     
    Тебе ведь это нужно было?


    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 10:50 04-11-2006
    Antananarivu

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, спасибо огромное! Все таки странно что в Excel это не было реализовано стандартными средствами!

    Всего записей: 151 | Зарегистр. 10-10-2006 | Отправлено: 11:20 04-11-2006
    Antananarivu

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    К сожалению только сегодня смог добраться до компьютера и попробовать реализовать написанную тобой процедуру. Я полный профан как в WinAPI так и в VBA, поэтому вопрос... Я сделал все как ты объяснил.. Excel попросил сохранить изменения, я сохранил как Книга1. Теперь, чтобы все работало, мне приходится каждый раз открывать эту Книгу1. Вопрос: а можно как нибудь сделать так, чтобы все работало, когда я кликаю стандартный ярлык Excel на рабочем столе (ну или в меню Пуск), а еще лучше, чтобы все работало для любого документа Excel - будь то созданный мной ранее документ или документ, созданный кем-то еще. Если лень объяснять, можно ссылку, попробую сам разобраться.

    Всего записей: 151 | Зарегистр. 10-10-2006 | Отправлено: 19:33 05-11-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Antananarivu
    Вставляй макрос в файл PERSONAL.XLS. Найдешь его в VBA редакторе. Этот файл запускается всегда в первую очередь и прячется в списке открытых файлов.
     
    В данном случае переключение клавиатуры срабатывает не для конкретного файла, а для всего приложения. Поэтому вроде достаточно запустить макрос один раз. Если же нужно запускать макрос при открытии каждой книги, надо обрабатывать событие App_WorkbookOpen (прописать в том же personal.xls). Смотри здесь, как это делать.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 07:39 06-11-2006
    korotetsky

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    наткнулся на фигню. неприятную.
     
    записал макрос, смысл таков:
    копирование листа в новый и задание ему определенного имени (предваоительно удалив существующий)
    далее на новом листе выделяется фрагмент и сортирует по заданым критериям  
    потом задается область печати и тыцькается в нужную ячейку (таблица хитрая - с закреплением областей, группировками ячеек и прочей байдой).
     
    проблема в следующем: макросом все выполняется без проблем и нареканий, но если это дело прицепить на кнопку, то получаем:
     

    Цитата:
    Run-time error '1004':
    Метод Select из класса Range завершен неверно  

     
    лист копирует, сортировать не хочет, запнувшись на ошибке с выделением.
    не соображу куда рыть и как эту гадость заставить работать
    вот сам текст, ошибается там где *:
     

    Цитата:
        Sheets("calendar").Delete
        Sheets("total").Select
        Sheets("total").Copy Before:=Sheets(2)
        Sheets("total (2)").Select
        Sheets("total (2)").Name = "calendar"
        ActiveSheet.Outline.ShowLevels RowLevels:=1
     *  Range("A8:AA122").Select
        Range("AA122").Activate
        Selection.Sort Key1:=Range("L8"), Order1:=xlAscending, Key2:=Range("C8") _
            , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
            :=xlSortNormal
        Range("A1:AA130").Select
        Range("AA130").Activate
        ActiveSheet.PageSetup.PrintArea = "$A$1:$AA$130"
        Range("D8").Select

     
    есть у кого-нибудь мысли?

    Всего записей: 24 | Зарегистр. 16-01-2006 | Отправлено: 18:07 06-11-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korotetsky
    Подозреваю, что проблема в этой строке:

    Цитата:
    ActiveSheet.Outline.ShowLevels RowLevels:=1

    а) Попробуй перенести ее в конец.  
    б) Выдаст ли ошибку, если установить это свойство в 0 (показать все)?

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 18:58 06-11-2006
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
    ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru