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

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

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

Может вы имеете ввиду на второй недел е ?
...
Рейтинг: 0 / 0
VBA Excel 2003
    #35070310
tat-besidovska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я имею ввиду,на второй недели месяца
...
Рейтинг: 0 / 0
VBA Excel 2003
    #35071269
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного упрощу задачу
например, ссылки на другой файл, записаны в первой строке
и допустим номер недели соответсвует номеру колонки
Код: 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
VBA Excel 2003
    #35139065
Sunnych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такой макрос он проходит по шапке (в шапке заданы месяца (янв.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
VBA Excel 2003
    #35145020
Sunnych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё вопрос решился помог друг
Код: 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
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel 2003
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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