Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Сохраняйте несколько столбцов и сохраняйте остальные на основе введенных данных

Автор вопроса: NupurОтветов: 0

Привет, у меня есть лист Excel с 5 аналогичными столбцами для каждого месяца (январь, февраль и т. д.).

введите здесь описание изображения

У меня есть код VBA, который автоматически создаст столбцы на следующий месяц (в данном случае это будет март). После ввода данных за март я хочу, чтобы мой файл был сохранен как March.xls, удалив данные за оставшуюся часть месяца (при сохранении данных за все месяцы в исходном файле). есть ли способ сделать это с помощью VBA? Я был бы признателен за ваши ответы относительно того же. Я хочу, чтобы мой файл каждого месяца "сохранялся как" ниже: введите здесь описание изображения

Я нашел приведенный ниже код в Интернете, и он выполняет свою работу. Единственная проблема заключается в том, что мне нужно ввести имя столбца, который я хочу удалить в этом коде, например: "Апрель" в коде. Можно ли заставить этот код работать таким образом, чтобы автоматически сохранять последние четыре столбца и первый (столбец идентификатора) и удалять остальные. Спасибо

Sub DeleteData()
    Dim ws As Worksheet
    Dim ColList As String, ColArray() As String
    Dim LastCol As Long, i As Long, k As Long, l As Long, m As Long, j As Long
    Dim boolFound As Boolean
    Dim delCols As Range, delCols1 As Range, delCols2 As Range, delCols3 As Range
    Application.ScreenUpdating = False
    Set ws = Sheets("Sheet1")
    ColList = "April"
    ColArray = Split(ColList, ",")
    LastCol = ws.Cells.Find(What:="*", After:=ws.Range("A1"), Lookat:=xlPart, _
    LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
    MatchCase:=False).Column
    For i = 8 To LastCol
    boolFound = False
    For j = LBound(ColArray) To UBound(ColArray)
    If UCase(Trim(ws.Cells(1, i).Value)) = UCase(Trim(ColArray(j))) Then
    boolFound = True
    Exit For
    End If
    Next
    If boolFound = False Then
    If delCols Is Nothing Then
    Set delCols = ws.Columns(i)
    Else
    Set delCols = Union(delCols, ws.Columns(i))
    End If
    End If
    Next i
    If Not delCols Is Nothing Then delCols.Delete
  • Отличается ли это от вопроса, который вы недавно задавали? stackoverflow.com/ вопросы/10079915/ Marc 30.04.2012
  • Не совсем, но я думаю, что удалил свой предыдущий вопрос. У него не было кода, как у меня в этом вопросе. Nupur 30.04.2012
  • @ Марк: Кроме того, в предыдущем ответе не было ответов. Итак, я просто больше изучил код. Nupur 30.04.2012

excelvbaexcel-2007

На этот вопрос пока нет ответов в архиве.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы