Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Excel Добавлено: 31.08.06 12:41  

Автор вопроса:  Егор
У меня вопрос. Есть готовый макрос, который действует только на 1 выделенную ячейку. Что нужно сделать, чтобы он работал на множество ячеек, например, на весь столбец?
Может есть какая-нибудь функция в Excel, которая бы выполняла макрос в каждой ячейке заданной области.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #1
Добавлено: 31.08.06 13:01
Дык ты к диапозону ячеек и обращайся
Сделай так - Начни запись макроса, выдели нужный диапозон и останови
запись макроса, получишь код ...

Ответить

Номер ответа: 2
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #2 Добавлено: 31.08.06 13:28
я не хочу менять сам макрос. Он большой и делал его не я.
Мне надо чтобы он выполнялся не в одной ячейке, а сразу или последовательно в нескольких.
На выполнение макроса назначено сочетание клавиш. И у меня нет времени обрабатывать каждую ячейку. этот процесс я хочу автоматизировать, но не знаю как

Ответить

Номер ответа: 3
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 31.08.06 16:07
я не хочу менять сам макрос.
Это не так срашно, как ты думаешь. Всего лишь нужно изменить обращение - на обращение к диапазону(как сказал [root]). Или если хочешь можно сделать циклом.
Но в любом случае тебе придется залесть в код.

Ответить

Номер ответа: 4
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #4 Добавлено: 31.08.06 16:59
А как сделать цикл?
Я мало чего понимаю в Visual Basic.
Может можно сделать макрос на макрос?
В любом случае подскажите какие-нибудь заклинания =)

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #5
Добавлено: 31.08.06 17:03
Знаешь, давай-ка лучше приведи здесь полный текст своего макроса... А мы поколдуем. И заодно тебя научим

Ответить

Номер ответа: 6
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #6 Добавлено: 31.08.06 17:24
' Пример обращения к функциям DLL GetFIOPadegFSAS и GetNominativePadeg
' Обращение к другим функциям выполняется аналогично
' Copyright (c) 2001 Gennady Pokatashkin e-mail: pgl@tut.by
' Sergey Plahov e-mail: S.Plahov@vaz.ru

Option Explicit

' Функция склонения ФИО с автоматическим определением пола по отчеству
' Параметры: pFIO - фамилия, имя, отчество
' nPadeg - падеж (допустимые значения: 1..6)
' pResult - буфер результата
' nLen - размер буфера (после преобразования - длина результата)
' Значение: 0 - успешное завершение
' -1 - недопустимое значение падежа
' -3 - результат не поместился в буфере

Private Declare Function GetPadeg Lib "Padeg.dll" Alias "GetFIOPadegFSAS" _
  ;(ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

' Функция восстановления именительного падежа
' Параметры: pFIO - фамилия, имя, отчество
' pResult - буфер результата
' nLen - размер буфера (после преобразования - длина результата)
' Значение: 0 - успешное завершение
' -3 - результат не поместился в буфере

Private Declare Function GetNominativePadeg Lib "Padeg.dll" _
  ;(ByVal pFIO As String, ByVal pResult As String, ByRef nLen As Long) As Integer

' Функция преобразования cFIO в падеж nPadeg
Public Function MakePadeg(ByVal cFIO As String, ByVal nPadeg As Long) As String
Dim tmpS As String
Dim nLen As Long
Dim RetVal As Integer
  If Len(cFIO) = 1 Then Exit Function
  nLen = 255
  tmpS = String(nLen, 0)
  RetVal = GetPadeg(cFIO, nPadeg, tmpS, nLen)
  If RetVal = -1 Then MsgBox "Недопустимое значение падежа - " & ";(" & nPadeg & ";)", , "Склонение ФИО"
  MakePadeg = Mid(tmpS, 1, nLen)
End Function

' Функция восстановления именительного падежа
Public Function Nominative(ByVal cFIO As String) As String
Dim tmpS As String
Dim nLen As Long
Dim RetVal As Integer
  nLen = 255
  tmpS = String(nLen, 0)
  RetVal = GetNominativePadeg(cFIO, tmpS, nLen)
  Nominative = Mid(tmpS, 1, nLen)
End Function


' Макросы преобразования ФИО в активной ячейке в соответствующий падеж

Public Sub Именительный()
  Cells(ActiveCell.Row, ActiveCell.Column) = Nominative(ActiveCell)
End Sub

Public Sub Родительный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 2)
End Sub

Public Sub Дательный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 3)
End Sub

Public Sub Винительный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 4)
End Sub

Public Sub Творительный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 5)
End Sub

Public Sub Предложный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 6)
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #7 Добавлено: 31.08.06 17:25
Мне нужно в дательный падеж перевести 50000 ячеек

Ответить

Номер ответа: 8
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #8 Добавлено: 31.08.06 17:28
к макросу прилагается библиотека
полная версия лежит здесь:
http://www.delphikingdom.com/zip/padeg.zip

Ответить

Номер ответа: 9
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #9
Добавлено: 31.08.06 18:56
к макросу прилагается библиотека
полная версия лежит здесь:
http://www.delphikingdom.com/zip/padeg.zip
Мы хитрые, нам библиотекп не нужна...
Мне нужно в дательный падеж перевести 50000 ячеек
Допустим, что все эти слова записаны в ячейках первого столбца. Тогда вместо
Public Sub Дательный()
  Cells(ActiveCell.Row, ActiveCell.Column) = MakePadeg(ActiveCell, 3)
End Sub
Пишем:
Public Sub Дательный()
    Dim i As Long
    For i = 1 To 50000
  Cells(i, ActiveCell.Column) = MakePadeg(ActiveCell, 3)
  Next i
End Sub

Проверь, работает?
)))))))))))

Ответить

Номер ответа: 10
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #10 Добавлено: 31.08.06 20:24
Не, скопировал одну ячейки 50000 раз

Ответить

Номер ответа: 11
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #11
Добавлено: 31.08.06 21:06
А, пордон, забыл заменить activecell:
Public Sub Дательный()
    ;Dim i As Long
    For i = 1 To 50000
  Cells(i, ActiveCell.Column) = MakePadeg(ActiveCell(i,1), 3)
  Next i
End Sub
А во сейчас попробуй. (А то мне лень) Ну как работает?

Ответить

Номер ответа: 12
Автор ответа:
 Егор



Вопросов: 1
Ответов: 7
 Профиль | | #12 Добавлено: 31.08.06 22:47
мда..
Господин волшебник, какое зелье вы употребляете?
Не знаю как, но всё работает!!

С П А С И Б О !

Ответить

Номер ответа: 13
Автор ответа:
 Сергей



ICQ: 101553851 

Вопросов: 0
Ответов: 1
 Профиль | | #13 Добавлено: 20.01.08 11:18
Александр ты гений!
А вот возможно сделать таким образом, чтобы перевод в выбранный падеж осуществлялся автоматически в пустую ячейку. Например из А2 (ФИО) в B2 (Пустая, в родительный падеж) и из А3 в B3 и т.п. Таким образом, я пишу в А2 любое ФИО, а В2 мне всё автоматом переводит. Т.е. я так понимаю это должна быть некая формула в B2 ?

Ответить

Номер ответа: 14
Автор ответа:
 178500



Вопросов: 0
Ответов: 3
 Профиль | | #14 Добавлено: 08.06.11 19:13
помогите, пожалуйста!! очень нужно сконвертировать именительный падеж в дательный. пытаюсь пользоваться вышеобозначенным кодом- он не работает.

если взять

Public Sub Дательный()
    ;Dim i As Long
    For i = 1 To 50000
  Cells(i, ActiveCell.Column) = MakePadeg(ActiveCell(i,1), 3)
  Next i
End Sub

и поместить в макрос, то в таком случае, он будет ругаться, т.к. у него не будет Padeg.dll, правильно ли я понимаю?как ее прицепить к этому Sub?

Ответить

Номер ответа: 15
Автор ответа:
 178500



Вопросов: 0
Ответов: 3
 Профиль | | #15 Добавлено: 08.06.11 19:15
выделяет Make Padeg и пишет - function is not defined

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам