Задать вопрос
@ilya_oktane

В vba office число конвертируется в дату при значении *-12345. Как вывод сделать текстовым?

Есть такой макрос для excel, который из одной строки с товаром одежды делает несколько, в зависимости от количества размеров, моделей и т.д. При вставке в поле "модель" значения 6-3366 и выполнении макроса, в ячейках формат предоставляется в дате, т.к. значение в исходной ячейке совпадает с форматом даты для excel. Макрос я не писал, достался по наследству, а тут возникла ситуация с таким вот числовым значением. Нужно задать формат исходной ячейки, т.к., преобразование уже точно произошло. Как это всё сделать?
6374d04426c24401861679.png
Option Explicit

Sub CreateList()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim Index As Integer
Dim Brand() As String
Dim Model() As String
Dim Colour() As String
Dim Size() As String
Dim Prefix As String
Dim Prefix2 As String

    Range("A3:Z1000").Delete
    
    Brand() = Split(Range("C2").Value, ",")
    Model() = Split(Range("D2").Value, ",")
    Colour() = Split(Range("E2").Value, ",")
    Size() = Split(Range("F2").Value, ",")
    
    Prefix = Trim(Range("J2"))
    If Len(Prefix) > 2 Then Prefix = Prefix & "/" Else Prefix = ""
    
    Prefix2 = Trim(Range("I2"))
    If Len(Prefix) > 2 Then Prefix2 = Prefix2 & " " Else Prefix2 = ""
    
    Index = 3
    
    For i = 0 To UBound(Brand)
        For j = 0 To UBound(Model)
            For k = 0 To UBound(Colour)
                For l = 0 To UBound(Size)
                
                    Brand(i) = Trim(Brand(i))
                    Model(j) = Trim(Model(j))
                    Colour(k) = Trim(Colour(k))
                    Size(l) = Trim(Size(l))
                    
                    Range("A" & Index) = Index
                    Range("B" & Index) = Model(j)
                    
                    Range("C" & Index) = Brand(i)
                    Range("D" & Index) = Model(j)
                    Range("E" & Index) = Colour(k)
                    Range("F" & Index) = Size(l)
                    
                    Range("G" & Index) = Range("G2")
                    Range("H" & Index) = Range("H2")
                    Range("K" & Index) = Range("K2")
                    Range("L" & Index) = Range("L2")
                    Range("M" & Index) = Range("M2")
                    Range("N" & Index) = Range("N2")
                    
                    Range("I" & Index) = Prefix2 & Brand(i) & " " & Model(j) & " " & Colour(k) & " " & Size(l)
                    Range("J" & Index) = Prefix & Brand(i) & "/" & Model(j) & "/" & Colour(k)
                    
                    Index = Index + 1
                Next l
            Next k
        Next j
    Next i
    
    Range("Setup!B2") = Index - 1
    
    Range("A1").Select
    
End Sub
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@LuchS-lynx
инженер-ПТО
строку в коде Range("D" & Index) = Model(j)
заменить на Range("D" & Index) = Chr(39) & Model(j)
дополнительно выделить столбец D (порядковый номер 4) и через свойство ячейки принудительно выставить текстовый тип данных
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
idShura
@idShura
Перед тем как присвоить значение 6-3366 ячейке, попробуй сначала изменить ее формат на текстовый.
Ответ написан
ForestAndGarden
@ForestAndGarden
Совершенствовать среду обитания
  • Ставить апостроф перед значением: '6-3366.
  • Вводить формулой: ="6-3366"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы