|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.10.2010, 06:55 | #1 |
Пользователь
Регистрация: 01.10.2010
Сообщений: 26
|
Книга Excel c макросом VBA работает только на моем компе, на других она считает не правильно...почемуууу?
ДОброе утро уважаемые форумчане...У меня проблема, мозг сломала ничего не могу придумать...
Книга Excel с макросом VBA правильно считает только на моем компьютере...а на других открывается но цифры совсем другие. \ Макрос загружает файл из банковской системы, и обрабатывает его. Код макроса написан в модуле, так же имеется экранная форма и часть кода в "Этой книге". Не могу понять почему у меня работает, а у других нет. Защит на ячейках, листах и книге НЕТ.... В персональную книгу макросов тоже мой макрос не включен.... ПОМОГИТЕ пожалуйста.......проект рабочий, а сдать его не могу.... |
27.10.2010, 07:39 | #2 |
Пользователь
Регистрация: 08.12.2009
Сообщений: 24
|
Ниаких дополнительно установленных надстроек экселя не используется на Вашем компьютере?
|
27.10.2010, 07:41 | #3 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
1. Несоответствие установленных разделителей целой и дробной части (при текстовой обработке). 2. Несоответствие установленных форматов "дата/время" (при текстовой обработке). 3. Наличие в коде макроса абсолютных путей и ссылок, которые не существуют на других компьютерах. Повторяю, что возможно причина совсем в другом.
Чем шире угол зрения, тем он тупее.
|
|
27.10.2010, 08:40 | #4 |
Пользователь
Регистрация: 01.10.2010
Сообщений: 26
|
SAS888 причина оказалась именно в разделителях....на моем компе стоят системные по умолчанию, а на компах пользователей стоят стандартные то бишь запятая, и точка....
и что с ней сделать можно.....может что-то не так в коде, а с системными разделителями отлично все работает... Sub Splitting_text() ' Dim WorkBookName As String Dim CopyBookName As String Dim i As Integer ' tmpDouble As Double WorkBookName = ThisWorkbook.Name Call Select_File(WorkBookName, CopyBookName, True) If bryakPoint = True Then Exit Sub 'CopyBookName = ActiveWorkbook.Name Sheets(1).Select Sheets(1).Copy before:=Workbooks(WorkBookName).She ets(1) Application.DisplayAlerts = False Workbooks(CopyBookName).Activate ActiveWorkbook.Close Application.DisplayAlerts = True Workbooks(WorkBookName).Activate Columns("F:F").Delete shift:=xlToLeft Columns("D:D").ColumnWidth = 2 Columns("C:C").ColumnWidth = 5 Columns("B:B").ColumnWidth = 6 Columns("A:A").ColumnWidth = 6 Columns("F:F").ColumnWidth = 100 Columns("G:G").ColumnWidth = 27 Columns("H:H").Delete shift:=xlToLeft '''''''''''Преобразование текста в числа'''''''''''''''''''''''''''''' '''''''''''''' Columns("G:G").Select Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.NumberFormat = "#,##0.00" i = 1 Do While (Cells(i, 7).Text <> "") Or (Cells(i + 1, 7).Text <> "") If (IsNumeric(Cells(i, 7).Text) = False) Then 'And (Cells(i, 7).Text <> "") Then Rows(i).Delete shift:=xlUp If i <> 1 Then i = i - 1 End If End If Cells(i, 7).Select If Cells(i, 7).Text <> "" Then ActiveCell.FormulaR1C1 = Round(CDbl(Cells(i, 7).Value), 2) End If i = i + 1 Loop Rows(Trim(Str(i - 3)) + ":" + Trim(Str(i + 10))).Delete shift:=xlUp 'Stop ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''' '''''''''''''' Application.DisplayAlerts = False ThisWorkbook.Sheets(2).Delete Application.DisplayAlerts = True End Sub |
27.10.2010, 09:06 | #5 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Преобразовывать текст в число Вашим способом нельзя. Т.к. число отображается по разному при разных установленных разделителях разрядов и дробной части, то, во-первых, нужно убедиться, что это действительно текст, во-вторых, убирая все запятые и меняя точку на запятую, Вы "подгоняете" полученный результат под Ваши установки. Поэтому Ваш Exсel может воспринять результат как число, а Excel с другими установками будет ошибаться.
Прикрепите фрагмент копируемого файла с имеющимися числами (достаточно несколько значений) и мы подскажем, что нужно сделать.
Чем шире угол зрения, тем он тупее.
|
27.10.2010, 09:25 | #6 |
Пользователь
Регистрация: 01.10.2010
Сообщений: 26
|
Загружаю....
|
27.10.2010, 13:19 | #7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите пример во вложении. После выполнения макроса, в столбце "B" будут выведены нужные числа в требуемом формате, не зависимо от установленных разделителей.
Чем шире угол зрения, тем он тупее.
|
28.10.2010, 09:22 | #8 |
Пользователь
Регистрация: 01.10.2010
Сообщений: 26
|
Спасибо за помощь=))) немного по другому сделала...там просто при загрузке из-за этих разделителей часть данных терялась, и потом выгрузка была не правильная.... =))
|
13.12.2010, 11:29 | #9 |
Пользователь
Регистрация: 01.10.2010
Сообщений: 26
|
У меня у вам маленький вопрос...привожу фрагмент кода, считывается файл, и по каждой статье разносится по дополнительным листам, дело в том, что в некоторых Кейсах расписаны все счета,на которые относятся статьи, А ЕСТЬ такие кейсы где берется ВСЯ группа счетов, как в "аренде линий связи", как сделать так чтобы бралась так же вся группа счетов, но исключался один счет, например 6303017 ??=))
Sub splitting_text() Dim i As Integer Dim j As Integer Dim k As Integer Dim m As Integer Dim tmpArr() Dim flag As Boolean Dim tmpStr As String 'Dim Left As Single Dim tmpStrr As String flag = False k = 0 ReDim tmpArr(k) For i = 1 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(i).Select Cells(1, 9).Value = "1.1. Расходы, связанные с технологическим развитием, в т.ч." Cells(2, 9).Value = "1.1.1. Расходы, связанные с программным обеспечением" Cells(3, 9).Value = "1.1.2. Расходы по сопровождению информационных систем" Cells(4, 9).Value = "1.1.3. Расходы по услугам телекоммуникационных систем" Cells(5, 9).Value = "1.1.4. Аренда линий связи" Columns(9).ColumnWidth = 100 Columns(10).ColumnWidth = 25 Columns(10).NumberFormat = "#,##0.00" For j = 1 To 50 Cells(j, 10).Value = 0 Next ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''' '''''''''''' ''''''''''''''разделение по счетам''''''''''''''''''''''''''''' ''''''''''''''''''' j = 1 'счетчик строк выбранного листа Do While Cells(j, 1).Text <> "" tmpStrr = Left(Cells(j, 5).Text, 4) Select Case tmpStrr 'если список счетов '"Расходы, связанные с программным обеспечением" Case Is = "6304" If (Right(Cells(j, 5).Text, 3) = "001") Or (Right(Cells(j, 5).Text, 3) = "002") Or (Right(Cells(j, 5).Text, 3) = "003") Or (Right(Cells(j, 5).Text, 3) = "004") Then Cells(2, 10).Value = Cells(2, 10).Value + Cells(j, 7).Value End If Case Is = "6406" '"Расходы по сопровождению информационных систем" If (Right(Cells(j, 5).Text, 3) = "018") Or (Right(Cells(j, 5).Text, 3) = "019") Or (Right(Cells(j, 5).Text, 3) = "020") Or (Right(Cells(j, 5).Text, 3) = "021") Then Cells(3, 10).Value = Cells(3, 10).Value + Cells(j, 7).Value End If '"Расходы по услугам телекоммуникационных систем" If (Right(Cells(j, 5).Text, 3) = "014") Or (Right(Cells(j, 5).Text, 3) = "015") Or (Right(Cells(j, 5).Text, 3) = "016") Or (Right(Cells(j, 5).Text, 3) = "017") Then Cells(4, 10).Value = Cells(4, 10).Value + Cells(j, 7).Value End If Case Is = "6303" '"Аренда линий связи" Cells(5, 10).Value = Cells(5, 10).Value + Cells(j, 7).Value For m = 0 To k If Cells(j, 5).Text = tmpArr(m) Then flag = True End If Next If flag = False Then tmpArr(k) = Cells(j, 5).Text k = k + 1 ReDim Preserve tmpArr(k) End If flag = False Case Else 'MsgBox "Неизвестный счет :-(" + Chr(13) + Chr(13) + "Хвост счета: " + Cells(j, 5).Text, vbCritical, "АХТУНГ" Rows(j).Interior.ColorIndex = 3 End Select j = j + 1 Loop Cells(18, 10).Value = Cells(19, 10).Value + Cells(20, 10).Value + Cells(21, 10).Value + Cells(22, 10).Value + Cells(23, 10).Value Next tmpStr = tmpArr(0) For m = 1 To UBound(tmpArr) tmpStr = tmpStr + ", " + tmpArr(m) Next End Sub |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
считает не правильно | rapgamer | Помощь студентам | 3 | 15.09.2010 14:23 |
Run time Err 9, а на моем ПК работает | PX100 | Microsoft Office Excel | 3 | 01.06.2010 05:18 |
Highslide не правильно работает в других браузерах | Barmunk | HTML и CSS | 1 | 28.08.2009 16:40 |
Уважаемые программисты.Скажите пожалуйста все ли правильно в моем коде. | Paul_AG | Общие вопросы C/C++ | 6 | 27.03.2009 21:30 |
EXCEl не правильно считает формулу | beliy-dis | Microsoft Office Excel | 5 | 30.07.2008 14:18 |