Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 373
1

Почему значение ячейки меняется в зависимости от масштаба просмотра листа?

21.08.2018, 15:51. Просмотров 789. Ответов 3

Здравствуйте!

Столкнулся с тем, что код значение ячейки, читаемое через метод .Text для объекта Range зависит от масштаба просмотра. Если на листе масштаб такой, что в ячейках вместо цифер отображаются #####, то в алгоритме к примеру Cell.Text также начинает иметь значение вида #####.

Скажите, пожалуйста, как исправить такую зависимость от масштаба просмотра листа?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2018, 15:51
Ответы с готовыми решениями:

В ячейке B2 второго листа вывести значение ячейки A1 первого листа
Необходимо чтобы, например, в ячейке B2 второго листа автомотически вводилось...

Как задать значение для ячейки в зависимости от значения другой ячейки
Здравствуйте! Подскажите, как задать значение для ячейки в зависимости от...

почему некоторые ячейки листа с 20 заполняются пустыми значениями?
При выводе данных из массива (массив 3х мерный: 4х60х150х200), примерно с листа...

Как присвоить значение ячейки одного листа и поставить ее в другой лист
Подскажите пожалуйста! Как присвоить значение ячейки одного листа и поставить...

Перенос значений определенных ячеек активной строки одного листа в определенные ячейки другого листа
Добрый день! Создаю простенькую программу для регистрации посетителей. Состоит...

3
mobile
Эксперт MS Access
23338 / 13143 / 2754
Регистрация: 28.04.2012
Сообщений: 14,395
21.08.2018, 16:11 2
Лучший ответ Сообщение было отмечено borro как решение

Решение

Свойство Text содержит значение, видимое на экране. Если видны решетки, то и в Text решетки. Хотите получить истинное значение - используйте свойство Value. Кстати Value является умолчательным свойством ячейки и его можно не писать.
1
borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 373
21.08.2018, 17:42  [ТС] 3
спасибо, что поняли мой нерусский

Добавлено через 40 минут
Попробовал не писать при передаче значений в функцию .Value для ячеек, как вы, mobile, посоветовали, например:
Visual Basic
1
If ЕСТЬНД(Cell) = 1 Then ...
где Cell это ячейка типа Range, а ЕСТЬНД функция вида:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Function ЕСТЬНД(s As String)
    Dim slen%
    slen = Len(Trim(s))
    If slen = 0 Then
        ЕСТЬНД = 1
        Exit Function
    ElseIf slen = 1 Then
        If InStr(1, s, "-", vbTextCompare) > 0 _
            Or InStr(1, s, "0", vbTextCompare) > 0 Then
            ЕСТЬНД = 1
            Exit Function
        End If
    ElseIf slen = 2 Then
        If InStr(1, s, "бн", vbTextCompare) > 0 _
            Or InStr(1, s, "бу", vbTextCompare) > 0 _
            Or InStr(1, s, "нд", vbTextCompare) > 0 Then
            ЕСТЬНД = 1
            Exit Function
        End If
    ElseIf slen = 3 Then
        If InStr(1, s, "б/н", vbTextCompare) > 0 _
            Or InStr(1, s, "б-н", vbTextCompare) > 0 _
            Or InStr(1, s, "б/у", vbTextCompare) > 0 _
            Or InStr(1, s, "б-у", vbTextCompare) > 0 _
            Or InStr(1, s, "н-д", vbTextCompare) > 0 _
            Or InStr(1, s, "б\н", vbTextCompare) > 0 _
            Or InStr(1, s, "б\у", vbTextCompare) > 0 _
            Or InStr(1, s, "н/д", vbTextCompare) > 0 _
            Or InStr(1, s, "н\д", vbTextCompare) > 0 _
            Or InStr(1, s, "нет", vbTextCompare) > 0 Then
            ЕСТЬНД = 1
            Exit Function
        End If
    ElseIf slen > 3 Then
        If InStr(1, s, "не опре", vbTextCompare) > 0 _
            Or InStr(1, s, "новый або", vbTextCompare) > 0 _
            Or InStr(1, s, "не найден", vbTextCompare) > 0 _
            Or InStr(1, s, "отключен", vbTextCompare) > 0 _
            Or InStr(1, s, "нет дан", vbTextCompare) > 0 _
            Or InStr(1, s, "нет све", vbTextCompare) > 0 _
            Or InStr(1, s, "ввод ТП", vbTextCompare) > 0 _
            Or InStr(1, s, "нежилое", vbTextCompare) > 0 _
            Or InStr(1, s, "не указ", vbTextCompare) > 0 Then
            ЕСТЬНД = 1
            Exit Function
        End If
    Else
        ЕСТЬНД = 0
    End If
End Function
Почему-то скрипт начал выдавать ошибку "ByRef argument type mismatch". Если добавлять .Value, то уже не ругается. От чего так?
0
mobile
Эксперт MS Access
23338 / 13143 / 2754
Регистрация: 28.04.2012
Сообщений: 14,395
21.08.2018, 18:36 4
Цитата Сообщение от borro Посмотреть сообщение
Если добавлять .Value, то уже не ругается. От чего так?
От того, что параметром функции задан явно определенный тип аргумента s As String. В ячейке может содержаться любое тип, не только текст и Excel обоснованно генерит ошибку. Либо откажитесь от явного указания типа параметра, либо передавайте значение конвертированное в текст
Visual Basic
1
If ЕСТЬНД(cstr(Cell)) = 1 Then ...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2018, 18:36

Макрос, которых обходит все непустые ячейки текущего листа, добавляет в массив залитые ячейки и на новый лист
Здравствуйте! Необходимо написать макрос, который бы "обходил" все непустые...

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru