Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 06:55   #1
Lays
Пользователь
 
Аватар для Lays
 
Регистрация: 01.10.2010
Сообщений: 26
По умолчанию Книга Excel c макросом VBA работает только на моем компе, на других она считает не правильно...почемуууу?

ДОброе утро уважаемые форумчане...У меня проблема, мозг сломала ничего не могу придумать...

Книга Excel с макросом VBA правильно считает только на моем компьютере...а на других открывается но цифры совсем другие. \

Макрос загружает файл из банковской системы, и обрабатывает его. Код макроса написан в модуле, так же имеется экранная форма и часть кода в "Этой книге". Не могу понять почему у меня работает, а у других нет. Защит на ячейках, листах и книге НЕТ....

В персональную книгу макросов тоже мой макрос не включен....

ПОМОГИТЕ пожалуйста.......проект рабочий, а сдать его не могу....
Lays вне форума Ответить с цитированием
Старый 27.10.2010, 07:39   #2
tns-ka
Пользователь
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

Ниаких дополнительно установленных надстроек экселя не используется на Вашем компьютере?
tns-ka вне форума Ответить с цитированием
Старый 27.10.2010, 07:41   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Книга Excel с макросом VBA правильно считает только на моем компьютере...а на других открывается но цифры совсем другие.
Без примера проблемного файла сложно ответить однозначно. Возможные причины:
1. Несоответствие установленных разделителей целой и дробной части (при текстовой обработке).
2. Несоответствие установленных форматов "дата/время" (при текстовой обработке).
3. Наличие в коде макроса абсолютных путей и ссылок, которые не существуют на других компьютерах.
Повторяю, что возможно причина совсем в другом.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.10.2010, 08:40   #4
Lays
Пользователь
 
Аватар для Lays
 
Регистрация: 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
Lays вне форума Ответить с цитированием
Старый 27.10.2010, 09:06   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Преобразовывать текст в число Вашим способом нельзя. Т.к. число отображается по разному при разных установленных разделителях разрядов и дробной части, то, во-первых, нужно убедиться, что это действительно текст, во-вторых, убирая все запятые и меняя точку на запятую, Вы "подгоняете" полученный результат под Ваши установки. Поэтому Ваш Exсel может воспринять результат как число, а Excel с другими установками будет ошибаться.
Прикрепите фрагмент копируемого файла с имеющимися числами (достаточно несколько значений) и мы подскажем, что нужно сделать.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.10.2010, 09:25   #6
Lays
Пользователь
 
Аватар для Lays
 
Регистрация: 01.10.2010
Сообщений: 26
По умолчанию

Загружаю....
Вложения
Тип файла: zip primer1.zip (5.8 Кб, 14 просмотров)
Lays вне форума Ответить с цитированием
Старый 27.10.2010, 13:19   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении. После выполнения макроса, в столбце "B" будут выведены нужные числа в требуемом формате, не зависимо от установленных разделителей.
Вложения
Тип файла: rar primer1_2.rar (9.7 Кб, 15 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.10.2010, 09:22   #8
Lays
Пользователь
 
Аватар для Lays
 
Регистрация: 01.10.2010
Сообщений: 26
По умолчанию

Спасибо за помощь=))) немного по другому сделала...там просто при загрузке из-за этих разделителей часть данных терялась, и потом выгрузка была не правильная.... =))
Lays вне форума Ответить с цитированием
Старый 13.12.2010, 11:29   #9
Lays
Пользователь
 
Аватар для Lays
 
Регистрация: 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
Lays вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считает не правильно 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