Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel 2003 / 6 сообщений из 6, страница 1 из 1
17.01.2008, 12:08
    #35067853
tat-besidovska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
Помогите чайнику, кто чем может! Проблемка такая:
Существует книга, в ней лист, на листе таблица, состоящая из 5-и столбцов: 1 неделя, 2 неделя...,5 неделя, ячейки которой заполняются данными, ссылаясь на данные других файлов. Можно ли сделать в VBA или просто в Excel так, чтобы данные обновлялись понедельно, т.е 2 неделя обновлялась только на 2 недели месяца начиная со вторника по пятницу и так все остальные недели( т.е весь смысл того, что я написала, состоит в том, чтобы данные которые заносят в другие файлы на будущие недели, в моей таблице появлялись только в реально текущую неделю). Заранее всем спасибо, буду рада любой помощи
...
Рейтинг: 0 / 0
17.01.2008, 16:58
    #35069276
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
"..т.е 2 неделя обновлялась только на 2 недели месяца начиная со вторника по пятницу и..."

Как одна (вторая неделя) может обновляться на две недели? Что вы имеете ввиду? Вам нужна одна неделя или две недели?

Или вы имеете ввиду не то, что пишете?

Может вы имеете ввиду на второй недел е ?
...
Рейтинг: 0 / 0
18.01.2008, 08:47
    #35070310
tat-besidovska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
Да, я имею ввиду,на второй недели месяца
...
Рейтинг: 0 / 0
18.01.2008, 13:22
    #35071269
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
немного упрощу задачу
например, ссылки на другой файл, записаны в первой строке
и допустим номер недели соответсвует номеру колонки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rw As Long:     rw = Target.Row
    Dim cl As Long:     cl = Target.Column
    
    Dim n As Integer:   n = DatePart("ww", Date)                        ' новая неделя начинается с воскресенья

    If rw =  1  And cl <=  5  Then
        If cl = n Then
            Cells(rw, cl).Formula = "=[Книга" & cl & ".xls]Лист1!$A$1"   ' !$A$" & rw
        Else
            Cells(rw, cl).Value = Target.Value
        End If
    End If

End Sub
...
Рейтинг: 0 / 0
18.02.2008, 13:56
    #35139065
Sunnych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
Есть вот такой макрос он проходит по шапке (в шапке заданы месяца (янв.08,фев.08,мар.08,апр.08 и.т.д)) и определяет таким образом начальный и конечный столбец области определения для изъятия и замены информации находящейся в ячейках, проблема такого рода ранее ячейки с месяцами были текстовыми, а теперь они в формате дата "Date", и я не знаю как мне переделать функции "Function" так что макрос работал как раньше.
Код: plaintext
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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
Function ПолучитьЛист(ИмяЛиста) As Worksheet
    Dim tmpWSh As Worksheet
    On Error Resume Next
    Set tmpWSh = ActiveWorkbook.Sheets(ИмяЛиста)
    If Err.Number <>  0  Then
        Set tmpWSh = ActiveWorkbook.Sheets.Add
        tmpWSh.Name = ИмяЛиста
    Else
        tmpWSh.UsedRange.Clear
    End If
    On Error GoTo  0 
    Set ПолучитьЛист = tmpWSh
End Function
 
Function ЭтоМесяц(ТекстЗнач) As Boolean
    Dim AllMonth As String
    ЭтоМесяц = False
    ТекстЗнач = LCase(ТекстЗнач)
    If InStr( 1 , "янв.08,фев.08,мар.08,апр.08,май.08,июн.08,июл.08,авг.08,сен.08,окт.08,ноя.08,дек.08", ТекстЗнач) >  0  Then
        ЭтоМесяц = True
    End If
End Function
 
Function ПолучитьНомерМесяца(ТекстЗнач) As Integer
    Dim StartPos As Integer
    Dim i As Integer
    Dim MonthNumber As Integer
    MonthNumber =  0 
    StartPos = InStr( 1 , "янв.08,фев.08,мар.08,апр.08,май.08,июн.08,июл.08,авг.08,сен.08,окт.08,ноя.08,дек.08", ТекстЗнач)
    For i =  1  To StartPos
        If Mid$("янв.08,фев.08,мар.08,апр.08,май.08,июн.08,июл.08,авг.08,сен.08,окт.08,ноя.08,дек.08", i,  1 ) = "," Then
            MonthNumber = MonthNumber +  1 
        End If
    Next i
    ПолучитьНомерМесяца = MonthNumber +  1 
End Function
 
Sub Sunnych_current_txt()
' Саныч Макрос
' Макрос записан 5.02.2008 (Sunnych)
    Dim SH As Worksheet
    Dim iCol As Integer
    Dim iStartCol As Integer
    Dim iMaxCol As Integer
    Dim iRow As Integer
    Dim iMaxRow As Integer
    Dim vVar1 As Variant
    Dim strT1 As String
    Dim intOffset As Integer
     
    Set SH = ПолучитьЛист("Лист3")
    iStartCol =  0 
    iMaxCol = Sheets("Лист1").UsedRange.Columns.Count + Sheets("Лист1").UsedRange.Column -  1 
    For iCol =  3  To iMaxCol
        Debug.Print Sheets("Лист1").UsedRange.Columns(iCol).Width
        If (Sheets("Лист1").UsedRange.Columns(iCol).Width >  1 ) And (iStartCol =  0 ) Then
            iStartCol = iCol
            Exit For
        End If
    Next iCol
    intOffset = iStartCol - ПолучитьНомерМесяца(LCase(Trim$(Sheets("Лист1").Cells( 8 , iStartCol).Text)))
    For iCol = iStartCol To iMaxCol
        Debug.Print Sheets("Лист1").UsedRange.Columns(iCol).Width
        If Sheets("Лист1").UsedRange.Columns(iCol).Width >  3  Then
            strT1 = Trim$(Sheets("Лист1").Cells( 8 , iCol).Text)
            If ЭтоМесяц(strT1) = False Then
                Exit For
            End If
            SH.Cells( 1 , ПолучитьНомерМесяца(strT1)).FormulaR1C1 = strT1
            SH.Cells( 1 , ПолучитьНомерМесяца(strT1)).NumberFormat = "[$-419]mmmm yyyy"
        End If
    Next iCol
    iMaxCol = iCol -  1      
    iRow =  9 
    Do While Trim$(Sheets("Лист1").Cells(iRow,  1 ).Text) <> ""
        For iCol = iStartCol To iMaxCol
            strT1 = Trim$(Sheets("Лист1").Cells(iRow, iCol).Text)
            If sText = "" Then
                sText = "0"
            ElseIf sText = "резерв" Then
                sText = "0R"
            ElseIf sText = "с 15" Then
                sText = "занят с 15"
            ElseIf sText = "до 15" Then
                sText = "занят до 15"
            Else
                sText = "1"
            End If
            SH.Cells(iRow -  7 , iCol - intOffset).NumberFormat = ""         
        Next iCol
        iRow = iRow +  1          
    Loop     
    For iCol =  1  To SH.UsedRange.Columns.Count
        If SH.Cells( 1 , iCol).Text <> "" Then
            iStartCol = iCol
            Exit For
        End If
    Next iCol
    SH.Activate
    For iCol =  1  To iStartCol -  1 
        SH.Range(Cells( 2 , iStartCol), Cells(SH.UsedRange.Rows.Count, iStartCol)).Select
        Selection.Copy
        SH.Cells( 2 , iCol).Select
        SH.Paste
    Next iCol     
    SH.Select
    For iCol = SH.UsedRange.Columns.Count +  1  To  12 
        SH.Range(Cells( 2 , SH.UsedRange.Columns.Count), Cells(SH.UsedRange.Rows.Count, SH.UsedRange.Columns.Count)).Select
        Selection.Copy
        SH.Cells( 2 , iCol).Select
        SH.Paste
    Next iCol    
    SH.Activate
    SH.Range(SH.Cells( 1 ,  1 ), SH.Cells(SH.UsedRange.Rows.Count, SH.UsedRange.Columns.Count)).Select
    Selection.Copy
 
End Sub
...
Рейтинг: 0 / 0
20.02.2008, 16:21
    #35145020
Sunnych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel 2003
Всё вопрос решился помог друг
Код: plaintext
1.
2.
        If Sheets("Лист1").UsedRange.Columns(iCol).Width >  3  Then
        If IsDate(Sheets("Лист1").Cells( 8 , iCol).Value) Then
            MonthNumber = Month(Sheets("Лист1").Cells( 8 , iCol).Value)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel 2003 / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]