Всем добрый день! Есть документ, он находиться во вложениях. Проблема заключается в том что надо к существующему макросу дописать блок кода для замены англицких обозначений на русские. Например: "ps", нужно поменять на "шт". И так далее помогите кто чем может.
Всем добрый день! Есть документ, он находиться во вложениях. Проблема заключается в том что надо к существующему макросу дописать блок кода для замены англицких обозначений на русские. Например: "ps", нужно поменять на "шт". И так далее помогите кто чем может.maloy
Сообщение отредактировал maloy - Среда, 17.10.2012, 13:59
А Вы уверены, что кто-то захочет разбираться в Вашем огромном файле, когда для решения проблемы, которую Вы "озвучили" в своём первом посте, явно достаточно десятка строк (чтобы знать как и где расположены данные) и ФРАГМЕНТА кода макроса?
А Вы уверены, что кто-то захочет разбираться в Вашем огромном файле, когда для решения проблемы, которую Вы "озвучили" в своём первом посте, явно достаточно десятка строк (чтобы знать как и где расположены данные) и ФРАГМЕНТА кода макроса?Alex_ST
Alex_ST на самом деле проблема то решена немного ранее, да и в коде своём я разбираться не прошу, пусть он длинее в 5 раз чем на самом деле,но я написал его сам и что самое главное он работает, а если что то работает то лучше туда не лезть))))) но чтобы этот пост не был пустой формальностью, я задам другую задачу. Есть диапазон в 1000 значений ("A1:A1000"), нужно найти последний элемент этого диапозона и все его не пустые элементы перемножить на число k, которое пользователь задаёт сам посредством inputbox. У меня получилось так.....
[vba]
Code
Dim t As Single, cell, last As Range, k As String
t = Val(InputBox("Введите расчётный курс валюты", "курс евро")) Set last = Range("A1:A1000") k = last.Columns.End(xlDown).Address For Each cell In Range("BG9:k") If IsNumeric(cell.Value) And cell.Value <> "" Then ' Умножаются только ячейки, содержащие числовые данные cell.Value = cell.Value * t Else MsgBox "В ячейке " & cell.Address & " нечисловое значение" End If Next
[/vba] Но раз я пишу, то значит у меня ни фига не получилось. мне кажется что проблема в том что в переменную k записывается в виде абсолютного адреса, но наверное range подобные манипуляции не приветствует)))
Просьба коды оформлять тегами! Модератор.
Alex_ST на самом деле проблема то решена немного ранее, да и в коде своём я разбираться не прошу, пусть он длинее в 5 раз чем на самом деле,но я написал его сам и что самое главное он работает, а если что то работает то лучше туда не лезть))))) но чтобы этот пост не был пустой формальностью, я задам другую задачу. Есть диапазон в 1000 значений ("A1:A1000"), нужно найти последний элемент этого диапозона и все его не пустые элементы перемножить на число k, которое пользователь задаёт сам посредством inputbox. У меня получилось так.....
[vba]
Code
Dim t As Single, cell, last As Range, k As String
t = Val(InputBox("Введите расчётный курс валюты", "курс евро")) Set last = Range("A1:A1000") k = last.Columns.End(xlDown).Address For Each cell In Range("BG9:k") If IsNumeric(cell.Value) And cell.Value <> "" Then ' Умножаются только ячейки, содержащие числовые данные cell.Value = cell.Value * t Else MsgBox "В ячейке " & cell.Address & " нечисловое значение" End If Next
[/vba] Но раз я пишу, то значит у меня ни фига не получилось. мне кажется что проблема в том что в переменную k записывается в виде абсолютного адреса, но наверное range подобные манипуляции не приветствует)))
Sub Замена() ' Замена Макрос ' Замена одного значение на другое Dim avArr, анг, рус, s&, i& анг = Array("m", "ps") рус = Array("м", "шт") Set avArr = Range("A1:A39") '.Value 'выбор диапазона значений в исходном листе For i = 1 To avArr.Rows.Count For s = 0 To 1 If avArr(i) = анг(s) Then 'проверяем диапазон на наличие записи с этой буквой avArr(i) = Replace(avArr(i), анг(s), рус(s)) 'Заменяем значение End If Next Next i End Sub
Sub Замена() ' Замена Макрос ' Замена одного значение на другое Dim avArr, анг, рус, s&, i& анг = Array("m", "ps") рус = Array("м", "шт") Set avArr = Range("A1:A39") '.Value 'выбор диапазона значений в исходном листе For i = 1 To avArr.Rows.Count For s = 0 To 1 If avArr(i) = анг(s) Then 'проверяем диапазон на наличие записи с этой буквой avArr(i) = Replace(avArr(i), анг(s), рус(s)) 'Заменяем значение End If Next Next i End Sub