Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/переменная в адресе диапазона - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » переменная в адресе диапазона (Макросы/Sub)
переменная в адресе диапазона
rosko Дата: Воскресенье, 02.07.2017, 11:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, Форумчане!

Помогите, пожалуйста, не удается сослаться на адрес ячейки с помощью переменной.
Сначала создается 4 случайных числа, потом из них случайно выбирается одно из них(randomValue_5).
selected_nmb - имитирует имя выбранного числа и передается в адрес диапазона.
Файл- пример тут наверно не важен.

[vba]
Код
Sub aaa()

Dim selected_nmb As String

Randomize

    randomValue_1 = Int((50) * Rnd()) + 1
    randomValue_2 = Int((50) * Rnd()) + 1
    randomValue_3 = Int((50) * Rnd()) + 1
    randomValue_4 = Int((50) * Rnd()) + 1
    
    randomValue_5 = Int((4) * Rnd()) + 1
    
    selected_nmb = "randomValue" & "_" & randomValue_5
        
    ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
    MsgBox ranslation

End Sub
[/vba]


Сообщение отредактировал rosko - Воскресенье, 02.07.2017, 11:18
 
Ответить
СообщениеДобрый день, Форумчане!

Помогите, пожалуйста, не удается сослаться на адрес ячейки с помощью переменной.
Сначала создается 4 случайных числа, потом из них случайно выбирается одно из них(randomValue_5).
selected_nmb - имитирует имя выбранного числа и передается в адрес диапазона.
Файл- пример тут наверно не важен.

[vba]
Код
Sub aaa()

Dim selected_nmb As String

Randomize

    randomValue_1 = Int((50) * Rnd()) + 1
    randomValue_2 = Int((50) * Rnd()) + 1
    randomValue_3 = Int((50) * Rnd()) + 1
    randomValue_4 = Int((50) * Rnd()) + 1
    
    randomValue_5 = Int((4) * Rnd()) + 1
    
    selected_nmb = "randomValue" & "_" & randomValue_5
        
    ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
    MsgBox ranslation

End Sub
[/vba]

Автор - rosko
Дата добавления - 02.07.2017 в 11:18
Karataev Дата: Воскресенье, 02.07.2017, 11:22 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 857
Репутация: 321 ±
Замечаний: 0% ±

Excel
Так работать с переменными, как Вы пытаетесь, нельзя, то есть нельзя указать часть переменной и затем к ней добавить какой-то фрагмент. Используйте массив.





Сообщение отредактировал Karataev - Воскресенье, 02.07.2017, 11:34
 
Ответить
СообщениеТак работать с переменными, как Вы пытаетесь, нельзя, то есть нельзя указать часть переменной и затем к ней добавить какой-то фрагмент. Используйте массив.


Автор - Karataev
Дата добавления - 02.07.2017 в 11:22
rosko Дата: Воскресенье, 02.07.2017, 11:40 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, спасибо большое!
правда все равно выдает ошибку
'run-time error '1004'
 
Ответить
СообщениеKarataev, спасибо большое!
правда все равно выдает ошибку
'run-time error '1004'

Автор - rosko
Дата добавления - 02.07.2017 в 11:40
Karataev Дата: Воскресенье, 02.07.2017, 11:43 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 857
Репутация: 321 ±
Замечаний: 0% ±

Excel
В Excel'е нельзя создать диапазон, который бы начинался цифрой. Например, у Вас получается число 11. Это число подставляется в Range(11). Такого не может быть.


 
Ответить
СообщениеВ Excel'е нельзя создать диапазон, который бы начинался цифрой. Например, у Вас получается число 11. Это число подставляется в Range(11). Такого не может быть.

Автор - Karataev
Дата добавления - 02.07.2017 в 11:43
Pelena Дата: Воскресенье, 02.07.2017, 11:46 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11275
Репутация: 2507 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Может, вместо
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
[/vba]написать
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Cells(selected_nmb, 1).Value
[/vba]
Не понятно, что Вы хотели получить этой строкой


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеМожет, вместо
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
[/vba]написать
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Cells(selected_nmb, 1).Value
[/vba]
Не понятно, что Вы хотели получить этой строкой

Автор - Pelena
Дата добавления - 02.07.2017 в 11:46
rosko Дата: Воскресенье, 02.07.2017, 11:47 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, понял)
вместо .range() нужно просто .cells()
 
Ответить
СообщениеKarataev, понял)
вместо .range() нужно просто .cells()

Автор - rosko
Дата добавления - 02.07.2017 в 11:47
rosko Дата: Воскресенье, 02.07.2017, 11:54 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, спасибо большое!!
 
Ответить
СообщениеPelena, спасибо большое!!

Автор - rosko
Дата добавления - 02.07.2017 в 11:54
_Boroda_ Дата: Воскресенье, 02.07.2017, 12:00 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 10898
Репутация: 4495 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Или, если хочется Range, то
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Range("A1").Offset(selected_nmb-1).Value
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИли, если хочется Range, то
[vba]
Код
ranslation = ThisWorkbook.Sheets(1).Range("A1").Offset(selected_nmb-1).Value
[/vba]

Автор - _Boroda_
Дата добавления - 02.07.2017 в 12:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » переменная в адресе диапазона (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!