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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2014, 02:36   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Ошибка VBA?

Всем привет.
Как такое может быть?
В жёлтом диапазоне есть числа 7, 8, 9, если протянуть мышкой от 7 до 9, только в жёлтом, то числа не меняются, если держать Ctrl и тянуть мышкой, то эти числа станут семёркой, несмотря на то, что курсор был с плюсиком.
Со всеми остальными числами, всё ОК!!!
Вложения
Тип файла: rar zxc.rar (6.6 Кб, 10 просмотров)
valerij вне форума Ответить с цитированием
Старый 11.03.2014, 03:41   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во всем заполненном диапазоне установлен текстовый формат. Очевидно, что в "желтом" диапазоне значения были введены после установки текстового формата, а в остальных ячейках - до изменения формата на текстовый.
Измените формат ячеек на "общий" (или числовой), затем, заново внесите в ячейку значения (достаточно войти и выйти в редактирование ячейки).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 11.03.2014, 04:24   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Очевидно, что в "желтом" диапазоне значения были введены после установки текстового формата, а в остальных ячейках - до изменения формата на текстовый..
Получается, что цифры в текстовом ф-те уже не цифры?

Придётся менять формат?
valerij вне форума Ответить с цитированием
Старый 11.03.2014, 11:45   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

внутри VBA все нормально... ошибка с внешней стороны.
"7" всегда не равно 7

Цитата:
достаточно войти и выйти в редактирование ячейки
а когда ячеек тысячи я произвожу замену например 0 на 0 (1 на 1, 2 на 2 и т.д.)
в худшем случае (чтобы изменения коснулись всех значений) - это десять замен, а не последовательное редактирование тысячи ячеек.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.03.2014, 11:48   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Хорошо помогает "текст по столбцам".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.03.2014, 14:21   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
внутри VBA все нормально... ошибка с внешней стороны.
Этот столбец цифр - даты, я получаю с помощью IgorGO_Макрос ещё с 2009 года, никаких правок в этих датах не предусмотрено, т. е. макросом ввёл и забыл.
Цитата:
"7" всегда не равно 7.
Если проверить это так, то получается, что равно или я не так понял, но в с3 семёрка ведь не в кавычках.
Код:
Sub zxc()
MsgBox [c3]
If [c3] = "7" Then MsgBox 77777
If [c3] = 7 Then MsgBox 55555
End Sub
valerij вне форума Ответить с цитированием
Старый 11.03.2014, 14:32   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Какое значение в ячейке можно посмотреть в Locals, изучив содержимое массива из этого диапазона.

Код:
Sub tt()
    Dim a()
    a = [c3:c20].Value
    Stop
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 11.03.2014 в 14:34.
Hugo121 вне форума Ответить с цитированием
Старый 11.03.2014, 17:30   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

проверяй так:
Код:
Sub AequalB()
  a = 7
  b = "7"
  Debug.Print "a = " & a & "   b = " & b & "   a=b? " & (a = b) & "!!!"
End Sub
смотри окно immediate (Ctrl+G) в редакторе ВБА
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.03.2014, 19:38   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
проверяй так:
Код:
Sub AequalB()
  a = 7
  b = "7"
  Debug.Print "a = " & a & "   b = " & b & "   a=b? " & (a = b) & "!!!"
End Sub
смотри окно immediate (Ctrl+G) в редакторе ВБА
Видел, но мне от этого надо уходить, раз один раз появилось, может появится и ещё, а найти, почему вдруг макрос не работает непросто.
Значит нужно менять формат.
Selection.NumberFormat = "General"
А как?
IgorGO
Вот твой макрос. Как сделать?
Код:
Sub даты()
Application.EnableEvents = False
c = 3: g = 3: cc = 2: gg = 2
        For L = 1 To 3
Sheets(L).Select
For iCount& = 0 To 13
If Application.Weekday([e1].Offset(iCount& * 28), 2) = 1 Then
        For i = 3 To 20
        Range("C" & i).Offset(iCount& * 28) = Day([e1].Offset(iCount& * 28) - c)
        c = c - 1: If c = 0 Then c = 3
        If i = 6 Or i = 7 Or i > 10 And i < 14 Or i > 16 Then GoTo 1
        Range("G" & i).Offset(iCount& * 28) = Day([e1].Offset(iCount& * 28) - g)
        g = g - 1: If g = 0 Then g = 3
1:      Next
Else
    For ii = 3 To 19
        If ii = 5 Or ii = 8 Or ii = 11 Or ii = 14 Or ii = 17 Then GoTo m
            Range("C" & ii).Offset(iCount& * 28) = Day([e1].Offset(iCount& * 28) - cc)
                cc = cc - 1: If cc = 0 Then cc = 2
m:      If ii > 4 And ii < 8 Or ii > 9 And ii < 14 Or ii > 15 Then GoTo 3
            Range("G" & ii).Offset(iCount& * 28) = Day([e1].Offset(iCount& * 28) - gg)
                gg = gg - 1: If gg = 0 Then gg = 2
3:  Next
End If
    Next iCount&
Next L
Application.EnableEvents = True
End Sub
valerij вне форума Ответить с цитированием
Старый 11.03.2014, 20:49   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

возможно, это нечто по мотивам моего макроса.
это я написал? 3 GoTo в короткой процедуре... я не припомню чтобы 3 раза использовал GoTo за последних несколько лет, не то что в одной процедуре.

кроме текста самого макроса, нужны бы данные, на которых он работает и понимать задачу, которую данный макрос решает. + необходимо время и желание что-либо написать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка vba Shhh Помощь студентам 2 07.11.2013 12:34
VBA Ошибка 1004 WiZzarD94 Помощь студентам 0 09.10.2013 22:28
Ошибка в VBA :( NataBekker Помощь студентам 1 24.05.2013 01:07
VBA - где-то ошибка Nasten'ka7 Microsoft Office Excel 10 02.02.2011 13:48
Ошибка в VBA (Excel) Tomoa Помощь студентам 4 26.03.2010 00:16