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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2016, 09:00   #1
artbotva
Форумчанин
 
Аватар для artbotva
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию Подправить vba код

Всем доброго времени суток.
Помогите пожалуйста с кодом. У меня есть:
Код:
Option Explicit
Function DaysInMonth(D As Date) As Integer
  Dim Dt1 As Date, Dt2 As Date
    Dt1 = DateSerial(Year(D), Month(D), 1)
    Dt2 = DateSerial(Year(D), Month(D) + 1, 1)
    DaysInMonth = Dt2 - Dt1
End Function
Sub FillTable()
Dim Rng As Range
Dim i As Integer, Dt1 As Date, Days2 As Integer
 Dt1 = Cells(1, 1).Value
   Days2 = DaysInMonth(Dt1)
   For i = 1 To Days2
        Cells(5, i).Value = WeekdayName(Weekday(Dt1 - 1))
        Cells(6, i).Value = Day(Dt1)
        Dt1 = Dt1 + 1
    Next i
End Sub

Private Sub CommandButton1_Click()
Call FillTable
End Sub
Он отображает вот так:


А надо вот так:

Недостижение того, что ты хотел, является иногда лучшим подарком судьбы
artbotva вне форума Ответить с цитированием
Старый 14.12.2016, 09:00   #2
artbotva
Форумчанин
 
Аватар для artbotva
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию

Заранее спасибо)
Недостижение того, что ты хотел, является иногда лучшим подарком судьбы
artbotva вне форума Ответить с цитированием
Старый 14.12.2016, 09:43   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Sub FillTable()
Dim Rng As Range, r As Byte, c As Byte
Dim i As Integer, Dt1 As Date, Days2 As Integer
 Dt1 = Cells(1, 1).Value
   Days2 = DaysInMonth(Dt1)
   For i = 1 To 7
    Cells(4, i) = WeekdayName(i)
   Next
   Range(Cells(5, 1), Cells(10, 8)).Clear
   r = 5: c = Weekday(DateSerial(Year(Dt1), Month(Dt1), 1), vbMonday)
   i = 1
   Do While i <= Days2
        Cells(r, c).Value = i
        If c Mod 7 = 0 Then
            r = r + 1
            c = 0
        End If
        c = c + 1
        i = i + 1
    Loop
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.12.2016, 12:28   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub FillTable()
  Dim Dt As Date, r&, c&, m&
  m = Month(Cells(1, 1)): Dt = DateSerial(Year(Cells(1, 1)), m, 1): r = 3: c = Weekday(Dt, 2)
  Do While Month(Dt) = m
    Cells(r, c) = Day(Dt):  Dt = Dt + 1:  If c = 7 Then c = 1: r = r + 1 Else c = c + 1
  Loop
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите подправить код Sony_boy Общие вопросы Delphi 4 26.09.2015 22:22
Нужно подправить код zeppelin58 Общие вопросы C/C++ 1 28.05.2010 12:11
Подправить код werser Помощь студентам 4 14.03.2010 23:26
Подправить рабочий код. michaelk Общие вопросы C/C++ 0 06.12.2009 11:33
подправить код ELF astserg01 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.04.2009 06:49