Формат даты макроса VBA

Если метод equals() присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим две различные ссылочные переменные, str1 и str2:

str1 = new String("abc");
str2 = new String("abc");

Если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

, вы получите выход как TRUE, если вы используете ==.

System.out.println((str1==str2) ? "TRUE" : "FALSE");

Теперь вы получите вывод FALSE в качестве вывода, потому что оба str1 и str2 указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String() каждый новый объект создается каждый раз.

2
задан Pᴇʜ 11 March 2019 в 13:14
поделиться

1 ответ

J, они правы (выше). Лично, если это небольшое количество данных, я бы использовал функцию Split , чтобы поместить в массив, а затем изменить и вывести оттуда. Это правда, что функции рабочего листа всегда будут быстрее и потреблять меньше ресурсов, чем использование массивов (особенно динамических массивов), но, возможно:

Option Explicit

Function MakeDates()

Dim cellData As String
Dim arr_data() As String
Dim intArr As Integer

cellData = ActiveCell.Value

arr_data = Split(cellData, ",")

For intArr = 0 To UBound(arr_data) - 1
    'getting rid of double-quotes
    arr_data(intArr) = Replace(arr_data(intArr), """", "")
    'formatting date if applicable
    If IsDate(arr_data(intArr)) Then: _
    arr_data(intArr) = Format(arr_data(intArr), "dd-m-yyyy")
    'placing data on Sheet
    ActiveCell.Offset(0, intArr).Value = arr_data(intArr)
Next

End Function
0
ответ дан J VBA 11 March 2019 в 13:14
поделиться
Другие вопросы по тегам:

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