Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Ребята здравствуйте! помогите ЧАЙНИКУ, разобраться с массивом который в цикле, выводящий строку штрафов, заранее спасибо!
......
Dim li As Long
 For li = 1 To 10
    li = Sheets("shtraf").Range("A2:F10").Value
   If TextBox2 = li Then
   With Wd.Range.Find
.Execute FindText:="#штраф1", ReplaceWith:=li, Replace:=2
.Execute FindText:="#штраф2", ReplaceWith:=li, Replace:=2
.Execute FindText:="#штраф3", ReplaceWith:=li, Replace:=2
.Execute FindText:="#штраф4", ReplaceWith:=li, Replace:=2
End With
Next li
......


К сообщению приложен файл. Размер - 38Kb
23 апр 19, 09:19    [21869480]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
Пожалуйста.
А вопрос будет?
23 апр 19, 09:37    [21869496]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, Простите, разволновался, как мвывести строку штрафов?, т.е. как на рисунке
если в TextBox2 ввести 3000 т тогда
#штраф1 - 1000
#штраф2 - 2000
#штраф3 - 3000
23 апр 19, 09:41    [21869500]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
Яснее не стало.
На рисунке, к примеру, нет никакого "#штраф1"

Тебе нужно четко, ясно, однозначно описать задачу, чтобы любой человек, который не в теме, мог понять.
Тогда, с большой вероятностью, и ответ сам придет
23 апр 19, 09:53    [21869512]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, циклом пытаюсь вывести строку штрафов из массива "на рисунке!, в документ Word в метки #штраф1, #штраф2, #штраф3, путем ввода в текстовое поле сумму, на основании чего и выводится в метки соответствующие штрафы.

К сообщению приложен файл. Размер - 41Kb
23 апр 19, 10:01    [21869521]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
Ну ок, яснее.
Теперь пытаюсь озвучить вопрос, который так и не прозвучал: "как мне взять значение из ячейки, если я знаю номер столбца и номер строки?"
Если так, то ответ Sheets("shtraf").Cells(a, b).Value
23 апр 19, 10:08    [21869526]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18845
assei
......
Dim li As Long
 For li = 1 To 10
    li = Sheets("shtraf").Range("A2:F10").Value

Бред. Нельзя в цикле изменять итератор цикла. Особенно чайникам.
23 апр 19, 10:58    [21869590]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
Akina
Бред. Нельзя в цикле изменять итератор цикла. Особенно чайникам.
ой, а я даже и не заметил этот косяк Картинка с другого сайта.

По большому счету нужен просто еще один вложенный цикл от 1 до 4
23 апр 19, 11:14    [21869609]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, что то я запарился ругается строка " f = Sheets("shtraf").Cells(i, s).Value"
Dim li
Dim i As Object
Dim s As Object
Dim f
Set i = Range("A2:A10")
Set s = Cells(3, 6)
f = Sheets("shtraf").Cells(i, s).Value
For li = TextBox2 To f

With Wd.Range.Find
    .Execute FindText:="#штраф1", ReplaceWith:=Cells(i, 3).Value, Replace:=2
    .Execute FindText:="#штраф2", ReplaceWith:=Cells(i, 4).Value, Replace:=2
    .Execute FindText:="#штраф3", ReplaceWith:=Cells(i, 5).Value, Replace:=2
    .Execute FindText:="#штраф4", ReplaceWith:=Cells(i, 6).Value, Replace:=2
End With
23 апр 19, 11:20    [21869625]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
Тут теперь такой бред, что даже комментировать нет смысла.
Сделай отладку по шагам, и посмотри, что в каждый конкретный момент находится в каждой конкретной переменной.
К примеру, переменная i у тебя объект, дальше ты присваиваешь ей диапазон (Range), а потом используешь в функции Cell в качестве номера строки (номер строки должен быть целым числом).

Не надо писать программу методом тыка. Думай, что и зачем ты делаешь.

В случае
.Execute FindText:="#штраф1", ReplaceWith:=Cells(i, 3).Value, Replace:=2
у тебя i должен быть номер текущей строки, то есть переменная цикла, а что ты туда пытаешься загнать - вообще непонятно
23 апр 19, 11:31    [21869634]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, получилось как то так!
Dim li
For li = 1 To 10
li = Sheets("shtraf").Range("A2:F10").Value
With Wd.Range.Find
    .Execute FindText:="#штраф1", ReplaceWith:=Cells(2, 3), Replace:=2
    .Execute FindText:="#штраф2", ReplaceWith:=Cells(3, 4), Replace:=2
    .Execute FindText:="#штраф3", ReplaceWith:=Cells(4, 5), Replace:=2
    .Execute FindText:="#штраф4", ReplaceWith:=Cells(5, 6), Replace:=2
End With
23 апр 19, 11:38    [21869641]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, поспешил
вы водит только первую строку
23 апр 19, 11:40    [21869643]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
1) ты осознаешь, как работает for?
For li = 1 To 10
li =
Зачем ты перезаписываешь переменную цикла?

2)
ReplaceWith:=Cells(2, 3),
Какой смысл в цикле вообще, если у тебя фиксированные столбец и строка?
23 апр 19, 11:53    [21869663]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, F8 заходит в процедуру, только вот не пойму записывает только первую строку, наверное в цикле условия прописать надо?
Dim li
Dim i As Long
li = Sheets("shtraf").Range("A2:F10").Value
Stop
For i = 2 To 10

With Wd.Range.Find
    .Execute FindText:="#штраф1", ReplaceWith:=Cells(i, 3), Replace:=2
    .Execute FindText:="#штраф2", ReplaceWith:=Cells(i, 4), Replace:=2
    .Execute FindText:="#штраф3", ReplaceWith:=Cells(i, 5), Replace:=2
    .Execute FindText:="#штраф4", ReplaceWith:=Cells(i, 6), Replace:=2
End With

Next i
23 апр 19, 12:07    [21869683]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
assei
записывает только первую строку
так он один раз нашел и заменил все "#штраф*" на числа. В следующие разы он уже ничего не найдет и не заменит
23 апр 19, 15:19    [21869876]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, нет с циклом у меня очень сложно!
23 апр 19, 16:19    [21869934]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
assei
Shocker.Pro, нет с циклом у меня очень сложно!
Сейчас выучим этот урок )
Тебе вообще зачем цикл? Чтобы найти нужную строку. Что ты сделал, чтобы убедиться в том, что строка нужная?
23 апр 19, 16:25    [21869944]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, что бы сравнить каждую строку из столбца "А" со строками в столбцов С:F
23 апр 19, 16:42    [21869961]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, пытался сравнить с текстовым поле 2, If TextBox2 = i Then
Dim i

 i = Sheets("shtraf").Range("A2:F10").Value
Stop

For i = 1 To 10
    If TextBox2 = i Then
...
23 апр 19, 16:44    [21869968]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
assei
пытался
и?
23 апр 19, 16:47    [21869972]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, я понимаю, что после условия, что то надо добавить а, что не понимаю, пробую пройти F8 а смотрю, что в (i) попадают не суммы с листа а просто счетчик 1, 2, 3 ... 10 , получается что в (i) не попадают данные в с листа в (i)
23 апр 19, 16:51    [21869979]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
После условия ничего не надо добавлять. А вот внутри условия нужно и выполнить нужные действия (замена шаблонов на значения, ну и выход из цикла).


assei
что в (i) попадают не суммы с листа а просто счетчик 1, 2, 3 ... 10
ну так i - это и есть счетчик строк, все правильно

assei
получается что в (i) не попадают данные в с листа в (i)
не надо, чтобы данные с листа попадали в i - это счетчик, зачем его портить?

Как получить значение из ячейки ты же уже разобрался: Cells(i, 3)
В чем проблема получить значение ячейки Cells(i, 1), где лежит нужная сумма для условия
23 апр 19, 17:35    [21870015]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, в Range("A2:F10").Value
23 апр 19, 17:41    [21870018]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
нет, в Cells(i, 1)
23 апр 19, 18:00    [21870025]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
значение лежит в первом столбце каждой конкретной строки
строки перебираются друг за другом
сосредоточься
23 апр 19, 18:01    [21870030]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
внутри цикла (при каждом его проходе) ты рассматриваешь ТОЛЬКО ОДНУ СТРОКУ
других строк в этот момент для тебя не существует
номер этой строки - i
23 апр 19, 18:03    [21870033]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro,
Stop
Dim i
i = Sheets("shtraf").Range("A2:F10").Value
  For i = 2 To 10
  [color=green]If Cells(i, 1) = TextBox2 Then[/color]

With Wd.Range.Find
    .Execute FindText:="#штраф1", ReplaceWith:=Cells(i, 3), Replace:=2
    .Execute FindText:="#штраф2", ReplaceWith:=Cells(i, 4), Replace:=2
    .Execute FindText:="#штраф3", ReplaceWith:=Cells(i, 5), Replace:=2
    .Execute FindText:="#штраф4", ReplaceWith:=Cells(i, 6), Replace:=2
End With
End If
Next i

НЕ ХВАСТАЮСЬ И ДАЖЕ НЕ РАДУЮСЬ ПОТОМУ ЧТО Я ТУПОЙ ЧАЙНИК!
24 апр 19, 11:21    [21870380]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, и все же что то не правильно?
24 апр 19, 11:25    [21870383]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, странно 10000 находит а 3000 не находит, что не так делаю опять?
24 апр 19, 11:31    [21870390]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, при F8 процедура сразу находит в место 3000 в i - попадает 15000,
24 апр 19, 11:40    [21870394]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, при F8 навожу на Cells .. показывает все суммы из столбца а в i- попадает в место 3000 только 10000, я что не так делаю?
24 апр 19, 11:48    [21870401]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, получилось и было то всего то .... .Text
 If Cells(i, 1) = TextBox2.Text Then
24 апр 19, 12:18    [21870420]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20295
1) вот это зачем?
assei
Dim i
i = Sheets("shtraf").Range("A2:F10").Value


2) После того, как нашел нужную строку, нет смысла продолжать цикл, поэтому Exit For
24 апр 19, 15:42    [21870703]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, да да я то же пришел к мнение что данная строка лишняя
24 апр 19, 15:48    [21870710]     Ответить | Цитировать Сообщить модератору
 Re: работа цикла с масивом  [new]
assei
Member

Откуда: Тамбов
Сообщений: 268
Shocker.Pro, спасибо вам большое.
24 апр 19, 15:49    [21870712]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft Office Ответить