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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 13:32   #91
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
ексель снова стал падать. причем не понятно отчего.
нам тоже непонятно - текста ошибки же нет..
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума
Старый 22.11.2013, 13:40   #92
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

я вообще не понимаю что сейчас происходит!!!
С такой ерундой падает! Все функции закоментил
Код:
Sub ЗатратыСвой()
Dim Reys As Integer
Dim Razmer As Integer
Dim i As Integer, j As Integer
'************************ SHEET ОТЧЕТ *****************************
With Sheets("отчет")
    iLastRow = .Range("A" & .Rows.Count).End(xlUp).Row 'определяем последнюю строку по столбцу дат
    
    a = .Range(.Cells(4, 1), .Cells(iLastRow, 32)) 'массив обрабатываемых значений
    
End With
'************************ SHEET CONFIG ****************************
With Sheets("config")
    iLastRow2 = .Range("H" & .Rows.Count).End(xlUp).Row 'определяем последнюю строку по столбцу дат
    
    b = .Range(.Cells(2, 8), .Cells(iLastRow2, 10)) 'массив обрабатываемых значений
       
    Тариф = .Range(.Cells(4, 1), .Cells(15, 3)) 'массив обрабатываемых значений
End With


'*************************** LETS RUN *****************************
Оклад = 138.89
Reys = 1

For i = 2 To UBound(a)
    If (a(i, НовыйРейс) <> "-") Then
        j = i - 1 ' последнее значение
        Razmer = j - Reys  ' размерность
        
        
        
                
       ' For Z = Reys To Reys + Razmer
        'If (ПоискХрени(Reys, Reys + Razmer) = 0) Then ' избавились от маршрутов "хоз.раб" , "-"
        
            'If (проверкаГород(Reys, Reys + Razmer)) Then ' чистый город
             '  РаспределениеГород Reys, Reys + Razmer, a(Reys, Сумма), СуммаПаллет(Reys, Reys + Razmer)
           ' End If
           ' If (проверкаОбласть(Reys, Reys + Razmer)) Then  ' чистая область
           '     РаспределениеОбласть Reys, Reys + Razmer, 0 ', 0
            'РасчетОблУник Reys, Reys + Razmer
           ' End If
         
           'If (Reys = 2395) Then
           ' If (проверкаСмешанный(Reys, Reys + Razmer)) Then  ' чистая область
           ' СчетСмешанный Reys, Reys + Razmer
               ' ThisWorkbook.ActiveSheet.Cells(Reys + 3, 2).Select
                'MsgBox (Reys + 3)
        
            'End If
            'End If
            'РасчетОблУник Reys, Reys + Razmer - 1
        'End If
    Reys = i
    End If

Next
'ХозНужды


With Sheets("отчет")
     .Range(.Cells(4, 1), .Cells(UBound(a) + 3, 32)) = a 'здесь выгружаем полученный массив
End With


End Sub
и над всем шапкой тут висит это
Код:
Dim a As Variant ' отчет
Dim b As Variant ' config
Dim Uniq(30, 2) 'уникальные : 0-НомерМаг 1-КолВо 2-Распределение
Dim Тариф ' тарифы
Dim Оклад
сейчас просто правил код в модуле,ничего не запуская.... ХЛОП! и что-то типо :"Программа EXCEL нашла ошибку и будет закрыта."

UPD
сейчас выдернул код с модуля в блокнот, чтобы подправить. подправил, выделил,скопировал, перешел на ескелевский модуль, Ctrl+V и падение...
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 22.11.2013 в 14:07.
SaLoKiN вне форума
Старый 22.11.2013, 14:19   #93
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

как минимум
объявите и присвойте начальное значение
переменной НовыйРейс
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума
Старый 22.11.2013, 14:25   #94
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

хм...спасибо за подсказку. но все эти переменные в паблике лежат в отдельном модуле. просто по запарке это не сказал.
кста, вроде решил проблему... удалил модуль,создал новый и туда код. сейчас работает без проблем. я в шоке x__x

все работает! =)
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 22.11.2013 в 14:47.
SaLoKiN вне форума
Старый 02.12.2013, 07:32   #95
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

и снова АП темы. ничего не вылетает. просто вопрос.
поместил я данные с листа в массив а
Код:
With Sheets("отчет")
        iLastRow = .Range("A" & .Rows.Count).End(xlUp).Row 'определяем последнюю строку по столбцу дат
        a = .Range(.Cells(4, 1), .Cells(iLastRow, 32)) 'массив обрабатываемых значений
    End With
после чего производились некоторые изменения в массиве. как выгрузить из массива только один столбец в нужный столбец листа?
не хочется выгружать массив полностью,т.к. тогда формулы,в других столбцах, заменяются значениями.
т.е. вот так не прикольно =(
Код:
 With Sheets("отчет")
        '.cells
        Z = UBound(a) + 3
        .Range(.Cells(4, 1), .Cells(Z, 32)) = a 'здесь выгружаем полученный массив
    End With
есть идея пройти циклом по всем значениям, но может существует более совершенный вариант?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 02.12.2013 в 07:44.
SaLoKiN вне форума
Старый 02.12.2013, 10:21   #96
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Первый столбец выгружается легко:
Код:
    z = UBound(a) + 3
    .Cells(4, 1).Resize(z, 1) = a    'здесь выгружаем первый столбец массива
Если нужно выгрузить например третий - то можно или отдельно ранее взять этот столбец в отдельный массив и отдельно обработать, или создать пустой массив, переложить в него данные из большого и его выгрузить.
Или можно использовать функцию листа INDEX(), но это самый медленный способ.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Старый 02.12.2013, 10:25   #97
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Пардоньте шо без "z"
Код:
Sub цикл()
    a = Range("A1:C" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    For i = 1 To UBound(a)
        Cells(i, 10) = a(i, 2)
    Next
End Sub

Sub ещё_массив()
    Dim a(), b()
    a = Range("A1:C" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a), 1 To 1)
    For i = 1 To UBound(a)
        b(i, 1) = a(i, 3)
    Next
    [F1].Resize(UBound(b), 1) = b
End Sub
kalbasiatka вне форума
Старый 02.12.2013, 10:30   #98
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пусть, например, из массива a нужно выгрузить 3-й столбец в столбец "H". Можно так:
Код:
[H1].Resize(UBound(a, 1)).Value = Application.Transpose(Application.Index(a, 0, 3))
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 02.12.2013, 10:49   #99
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

SAS888 чет не прокатило..все значения 1. вернее не 1, а весь столбец заполняется первым значением.
kalbasiatka 1 - про этот вариант я писал. можно, но искал вариант без циклов и обращения к каждой ячейке.
2 - то что предложил Hugo. наверн единственный вариант.
Hugo121 создавать отдельный массив. перегружать в него из исходного и потом выкладывать. много всего делать...

неужели нельзя тупо выложить нужный столбец массива в столбец листа(

кста изначально значения сразу помещались на лист без массива, но т.к. вывод происходил из 4х разных функций,каждая из которых обращалась к ячейкам. я убрал это, т.к. посчитал это не правильным...
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 02.12.2013 в 10:59.
SaLoKiN вне форума
Старый 02.12.2013, 11:39   #100
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Гдеж много? Всего 3 строки:
Код:
Sub tt()
    Dim a(), i&
    
    a = [a1:b10].Value

    ReDim b(1 To UBound(a), 1 To 1)
    For i = 1 To UBound(a): b(i, 1) = a(i, 2): Next
    [e1].Resize(UBound(b), 1) = b

End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Qt] Вылет при изменении параметров QTableWidgetItem WarAngel-alk Qt и кроссплатформенное программирование С/С++ 4 31.01.2013 17:58
вылет программы при выводе простого числа (cout) Ciberal Общие вопросы C/C++ 7 27.09.2011 01:51
Вылет программы после завершение kloffelin Общие вопросы C/C++ 3 17.04.2010 20:18
Ошибка при использовании copyfile The Best Общие вопросы Delphi 20 22.07.2009 13:26
Проблемка при использовании регрессии 500_pinguins Microsoft Office Excel 0 16.06.2009 08:17