С моим кодом я хочу, чтобы 2 выполнял форматирование по нескольким соседним COLUMNS, и я хочу сделать это элегантно в коде. Так же, как это должно быть в книге. Я учусь, поэтому хочу научиться правильному пути. это как моя задача выглядит следующим образом:Выполните форматирование нескольких соседних столбцов в excel VBA?
Я прочитал this. Я имею в виду ... нет там действительно нет возможности перечислить буквы столбцов в методе COLUMNS? нет способа сделать это?
Так что мне нужно использовать объект RANGE для выполнения моей задачи? Правильно ли это?
Как использовать метод UNION в сочетании с «With ... End With» Это мое дело, я думаю. Пожалуйста, объясните более подробно, чем только 1,5-строчный ответ. мне нужно будет делать то же самое с Колонный: B, C, G, H. Они будут отформатированы .NumberFormat = "#,##0.00"
Option Explicit
Dim VBA As Worksheet
Dim Filter As String
Dim Stock As Variant
Dim Index As Variant
Dim Portfolio As Variant
' Dim Date as Range
Sub Columns_Formatting()
Set VBA = Workbooks("kgh pricing model thursday.xlsm").Worksheets("VBA")
Filter = "Pliki CSV, *.csv," & "Pliki TXT, *.txt," & "All Files, *.*"
' Stock = Application.GetOpenFilename(fileFilter:=Filter, FilterIndex:=1, Title:="Choose file with a stock prices")
' Index = Application.GetOpenFilename(fileFilter:=Filter, FilterIndex:=1, Title:="Choose file with an index values")
' If Stock = False Or Index = False Then MsgBox "Canceled": Exit Sub
With VBA.Columns("A:A,F:F") ' here is the error = type mismath
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.NumberFormat = "yyyy-mm-dd;@"
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.ColumnWidth = 12
End With
With VBA.Columns("A;F")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.NumberFormat = "General"
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.ColumnWidth = 12
End With
With VBA.Range("E2:E" & Rows.Count)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.NumberFormat = "#,##0"
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.ColumnWidth = 10
End With
да, вместо 'С VBA.Columns ("A: A, F: F")' 'С использованием VBA.Range ("A: A, F: F")' –
для второй части , просто используйте 'С VBA.Range (« B: B, C: C, G: G, H: H »)' или короче 'С VBA.Range (« B: C, G: H »)' –
it работает человек. поблагодарить U за быстрый и правильный ответ –