Страницы: 1
RSS
Улучшить макрос
 
Всем доборый день и как всегда помогите пожалуйста :).  
Есть 15 файлоф, данные из них стикаются в некий итоговый файл,и в этой базе уже ищут данные. проблема вот в чем:  
Поиск завязан на номер накладной. по некоторым причинам этот номер водят иногда как число тогда проблем никаких не возникает, но и ногда,а вернее частенько его вводят в текстовом формате и оно сливается в базу данных как текст и уже нельзя его искать по формулам. Я в колонку куда сливаются номера накладных (колонка В) добавил еще одну (колонка С) и при помощи кнопки и строки  
Range("C2").Value = Range("B2").Value  
переписываю их но уже все как числа.  
Проблема такая: количество строк постоянно растет, плюс пятнадцать листов в книге и писать для каждой строки код как то не хочется да и пожалуй можно сделать это как то проще, и что бы кнопочка  для запуска кода была одна для всех листов.Поделитись если кто знает как можно это все сделать.  
Пример прилагаю.
 
Добавьте в модуль ЭТА КНИГА такой макрос:  
 
Sub СложнейшийМакрос()  
   ActiveSheet.UsedRange.Columns(2).Offset(1, 1).Value = ActiveSheet.UsedRange.Columns(2).Offset(1).Value  
End Sub  
 
 
и назначьте этому макросу кнопку на панели инструментов.
 
{quote}{login=Alexander_V}{date=05.10.2009 05:23}{thema=Улучшить макрос}{post}Всем доборый день и как всегда помогите пожалуйста :).  
Есть 15 файлоф, данные из них стикаются в некий итоговый файл,и в этой базе уже ищут данные. проблема вот в чем:  
Поиск завязан на номер накладной. по некоторым причинам этот номер водят иногда как число тогда проблем никаких не возникает, но и ногда,а вернее частенько его вводят в текстовом формате и оно сливается в базу данных как текст и уже нельзя его искать по формулам. Я в колонку куда сливаются номера накладных (колонка В) добавил еще одну (колонка С) и при помощи кнопки и строки  
Range("C2").Value = Range("B2").Value  
переписываю их но уже все как числа.  
Проблема такая: количество строк постоянно растет, плюс пятнадцать листов в книге и писать для каждой строки код как то не хочется да и пожалуй можно сделать это как то проще, и что бы кнопочка  для запуска кода была одна для всех листов.Поделитись если кто знает как можно это все сделать.  
Пример прилагаю.{/post}{/quote}  
Sub q()  
Dim i As Long  
For i = 1 To Cells(1, 1).End(xlDown).Row - 1  
 Cells(i + 1, 4).Value = Val(Cells(i + 1, 2).Value)  
Next i  
End Sub
 
{quote}{login=EducatedFool}{date=05.10.2009 05:41}{thema=}{post}Добавьте в модуль ЭТА КНИГА такой макрос:  
 
Sub СложнейшийМакрос()  
   ActiveSheet.UsedRange.Columns(2).Offset(1, 1).Value = ActiveSheet.UsedRange.Columns(2).Offset(1).Value  
End Sub  
 
 
и назначьте этому макросу кнопку на панели инструментов.{/post}{/quote}  
 
EducatedFool твой работает но частично- он переписывает как нужно но только на активном(открытом) листе, а так что бы на всех остальных не активных как сделать    
В примере на двух листах есть накладные и кнопки
 
Sub ВерсияДляВсехЛистов()  
   Dim sh As Worksheet, ra As Range  
   Application.ScreenUpdating = False  
   For Each sh In ThisWorkbook.Worksheets  
       Set ra = sh.UsedRange.Columns(2).Offset(1)  
       ra.Offset(, 1).Value = ra.Value  
   Next sh  
   Application.ScreenUpdating = True  
End Sub
 
{quote}{login=EducatedFool}{date=05.10.2009 05:54}{thema=}{post}Sub ВерсияДляВсехЛистов()  
   Dim sh As Worksheet, ra As Range  
   Application.ScreenUpdating = False  
   For Each sh In ThisWorkbook.Worksheets  
       Set ra = sh.UsedRange.Columns(2).Offset(1)  
       ra.Offset(, 1).Value = ra.Value  
   Next sh  
   Application.ScreenUpdating = True  
End Sub{/post}{/quote}  
В десяточку :) Спасибо
Страницы: 1
Читают тему
Наверх
Loading...