переменная в адресе диапазона
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]
Добрый день, Форумчане! Помогите, пожалуйста, не удается сослаться на адрес ячейки с помощью переменной. Сначала создается 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
Сообщение отредактировал 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
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Так работать с переменными, как Вы пытаетесь, нельзя, то есть нельзя указать часть переменной и затем к ней добавить какой-то фрагмент. Используйте массив.
[vba]
Код
Sub aaa() Dim randomValues(1 To 4) As Long, randomValue_5 As Long Dim selected_nmb As String, ranslation Randomize randomValues(1) = Int((50) * Rnd()) + 1 randomValues(2) = Int((50) * Rnd()) + 1 randomValues(3) = Int((50) * Rnd()) + 1 randomValues(4) = Int((50) * Rnd()) + 1 randomValue_5 = Int((4) * Rnd()) + 1 selected_nmb = randomValues(randomValue_5) ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value MsgBox ranslation End Sub
[/vba]
Так работать с переменными, как Вы пытаетесь, нельзя, то есть нельзя указать часть переменной и затем к ней добавить какой-то фрагмент. Используйте массив.
[vba]
Код
Sub aaa() Dim randomValues(1 To 4) As Long, randomValue_5 As Long Dim selected_nmb As String, ranslation Randomize randomValues(1) = Int((50) * Rnd()) + 1 randomValues(2) = Int((50) * Rnd()) + 1 randomValues(3) = Int((50) * Rnd()) + 1 randomValues(4) = Int((50) * Rnd()) + 1 randomValue_5 = Int((4) * Rnd()) + 1 selected_nmb = randomValues(randomValue_5) ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value MsgBox ranslation End Sub
[/vba]
Karataev
Сообщение отредактировал Karataev - Воскресенье, 02.07.2017, 11:34
Ответить
Сообщение Так работать с переменными, как Вы пытаетесь, нельзя, то есть нельзя указать часть переменной и затем к ней добавить какой-то фрагмент. Используйте массив.
[vba]
Код
Sub aaa() Dim randomValues(1 To 4) As Long, randomValue_5 As Long Dim selected_nmb As String, ranslation Randomize randomValues(1) = Int((50) * Rnd()) + 1 randomValues(2) = Int((50) * Rnd()) + 1 randomValues(3) = Int((50) * Rnd()) + 1 randomValues(4) = Int((50) * Rnd()) + 1 randomValue_5 = Int((4) * Rnd()) + 1 selected_nmb = randomValues(randomValue_5) ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value MsgBox ranslation End Sub
[/vba]
Автор - 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
Ответить
Сообщение Karataev , спасибо большое! правда все равно выдает ошибку 'run-time error '1004'Автор - rosko Дата добавления - 02.07.2017 в 11:40
Karataev
Дата: Воскресенье, 02.07.2017, 11:43 |
Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
В Excel'е нельзя создать диапазон, который бы начинался цифрой. Например, у Вас получается число 11. Это число подставляется в Range(11). Такого не может быть.
В Excel'е нельзя создать диапазон, который бы начинался цифрой. Например, у Вас получается число 11. Это число подставляется в Range(11). Такого не может быть. Karataev
Ответить
Сообщение В Excel'е нельзя создать диапазон, который бы начинался цифрой. Например, у Вас получается число 11. Это число подставляется в Range(11). Такого не может быть. Автор - Karataev Дата добавления - 02.07.2017 в 11:43
Pelena
Дата: Воскресенье, 02.07.2017, 11:46 |
Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация:
4420
±
Замечаний:
±
Excel 365 & Mac Excel
Может, вместо [vba]Код
ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
[/vba]написать [vba]Код
ranslation = ThisWorkbook.Sheets(1).Cells(selected_nmb, 1).Value
[/vba] Не понятно, что Вы хотели получить этой строкой
Может, вместо [vba]Код
ranslation = ThisWorkbook.Sheets(1).Range(selected_nmb & 1).Value
[/vba]написать [vba]Код
ranslation = ThisWorkbook.Sheets(1).Cells(selected_nmb, 1).Value
[/vba] Не понятно, что Вы хотели получить этой строкой Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 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
Ответить
Сообщение Karataev , понял) вместо .range() нужно просто .cells()Автор - rosko Дата добавления - 02.07.2017 в 11:47
rosko
Дата: Воскресенье, 02.07.2017, 11:54 |
Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Pelena , спасибо большое!!
Pelena , спасибо большое!!rosko
Ответить
Сообщение Pelena , спасибо большое!!Автор - rosko Дата добавления - 02.07.2017 в 11:54
_Boroda_
Дата: Воскресенье, 02.07.2017, 12:00 |
Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Или, если хочется Range, то [vba]Код
ranslation = ThisWorkbook.Sheets(1).Range("A1").Offset(selected_nmb-1).Value
[/vba]
Или, если хочется Range, то [vba]Код
ranslation = ThisWorkbook.Sheets(1).Range("A1").Offset(selected_nmb-1).Value
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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