Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("B5:B30")) Is Nothing Then Exit Sub
Dim sComm As String
With Target Select Case .Value Case "nb", "b" sComm = InputBox("Ввод причины:", "Ввод причины", "Прогул") If Len(sComm) > 0 Then .ClearComments .AddComment sComm End If Case Empty .ClearComments Exit Sub Case Else .ClearComments .ClearContents MsgBox "Информация", 0 Or 64, "Заголовок" End Select End With End Sub
[/vba] немного опоздал
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("B5:B30")) Is Nothing Then Exit Sub
Dim sComm As String
With Target Select Case .Value Case "nb", "b" sComm = InputBox("Ввод причины:", "Ввод причины", "Прогул") If Len(sComm) > 0 Then .ClearComments .AddComment sComm End If Case Empty .ClearComments Exit Sub Case Else .ClearComments .ClearContents MsgBox "Информация", 0 Or 64, "Заголовок" End Select End With End Sub
Можно еще и без макроса перевести дату в число. Для этого нужно выделить нужный диапазон, нажать ctrl+ h найти - «.» заметить на «.» Заменить все [p.s.]точки вводить без кавычек
Можно еще и без макроса перевести дату в число. Для этого нужно выделить нужный диапазон, нажать ctrl+ h найти - «.» заметить на «.» Заменить все [p.s.]точки вводить без кавычекkrosav4ig
у объекта chart есть свойство rotation угол поворота относительно начального положения. центр вращения находится в центре диаграммы. upd. Слепил небольшой примеричк
у объекта chart есть свойство rotation угол поворота относительно начального положения. центр вращения находится в центре диаграммы. upd. Слепил небольшой примеричкkrosav4ig
Sub LoadCSV() Dim File_$, Path_$, strcon$, strSQL$, rsARR(), field_$ Dim cnn: Set cnn = CreateObject("ADODB.Connection") Dim rst: Set rst = CreateObject("ADODB.Recordset") Dim field xx: File_ = Application.GetOpenFilename("CSV data logs,*.csv", , "Выберите CSV файл", , False) If File_ = "False" Then If MsgBox("Хотите продолжить?", 32 Or 4, "Вы не выбрали файл!") = 6 Then GoTo xx Else: Exit Sub End If End If Path_ = Left(File_, InStrRev(File_, "\")) File_ = Mid(File_, InStrRev(File_, "\") + 1) strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path_ & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";" cnn.Open strcon strSQL = "SELECT * FROM " & File_ & ";" Set rst = cnn.Execute(strSQL) field_ = rst.fields(0).Name strSQL = "SELECT * FROM " & File_ & " where [" & field_ & "] is not null order by [" & field_ & "];" Set rst = cnn.Execute(strSQL) rsARR = rst.GetRows With [a1].Resize(UBound(Application.Index(rsARR, 1, 0)), UBound(rsARR) + 1) .Value = Application.Transpose(rsARR) End With rst.Close Set cnn = Nothing End Sub
[/vba]
Vostok, вотъ вам еще вариант [vba]
Код
Sub LoadCSV() Dim File_$, Path_$, strcon$, strSQL$, rsARR(), field_$ Dim cnn: Set cnn = CreateObject("ADODB.Connection") Dim rst: Set rst = CreateObject("ADODB.Recordset") Dim field xx: File_ = Application.GetOpenFilename("CSV data logs,*.csv", , "Выберите CSV файл", , False) If File_ = "False" Then If MsgBox("Хотите продолжить?", 32 Or 4, "Вы не выбрали файл!") = 6 Then GoTo xx Else: Exit Sub End If End If Path_ = Left(File_, InStrRev(File_, "\")) File_ = Mid(File_, InStrRev(File_, "\") + 1) strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path_ & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";" cnn.Open strcon strSQL = "SELECT * FROM " & File_ & ";" Set rst = cnn.Execute(strSQL) field_ = rst.fields(0).Name strSQL = "SELECT * FROM " & File_ & " where [" & field_ & "] is not null order by [" & field_ & "];" Set rst = cnn.Execute(strSQL) rsARR = rst.GetRows With [a1].Resize(UBound(Application.Index(rsARR, 1, 0)), UBound(rsARR) + 1) .Value = Application.Transpose(rsARR) End With rst.Close Set cnn = Nothing End Sub
Здравствуйте. Скажите пожалуйста, можно ли как-нить прикрутить класс List(of T) из .net FW к VBA. Уж очень хочется. Честно гуглил (точнее нигмил), но ничего не нашел . Спасибо
Здравствуйте. Скажите пожалуйста, можно ли как-нить прикрутить класс List(of T) из .net FW к VBA. Уж очень хочется. Честно гуглил (точнее нигмил), но ничего не нашел . Спасибоkrosav4ig
Sub toCSV() Dim wsh As Worksheet, wsh1 As Worksheet, wsh2 As Worksheet Dim rng1, rng2 As Range, rRow& With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With On Error GoTo err Set wsh = ActiveSheet Set wsh1 = Sheets("IRR"): Set wsh2 = Sheets("CSV") Set rng1 = wsh1.[A:A].SpecialCells(xlCellTypeConstants, 1) Set rng2 = Intersect(wsh1.[O:R], rng1.EntireRow) With wsh2 rRow = Application.CountA(.[B:B]) rng2.Copy .[B1].Offset(rRow) rng1.Copy .[D1].Offset(rRow) rRow = Application.CountA(.[B:B])-1 .[A2:A3].AutoFill .[A2].Resize(rRow), 0 .[F2:I3].AutoFill .[F2:I3].Resize(rRow), 0 .[B2:E2].AutoFill .[B2:E2].Resize(rRow), 3 End With Application.CutCopyMode = 0: wsh.Activate Set wsh = Nothing: Set wsh1 = Nothing: Set wsh2 = Nothing err: With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
замените код в module2 на[vba]
Код
Sub toCSV() Dim wsh As Worksheet, wsh1 As Worksheet, wsh2 As Worksheet Dim rng1, rng2 As Range, rRow& With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With On Error GoTo err Set wsh = ActiveSheet Set wsh1 = Sheets("IRR"): Set wsh2 = Sheets("CSV") Set rng1 = wsh1.[A:A].SpecialCells(xlCellTypeConstants, 1) Set rng2 = Intersect(wsh1.[O:R], rng1.EntireRow) With wsh2 rRow = Application.CountA(.[B:B]) rng2.Copy .[B1].Offset(rRow) rng1.Copy .[D1].Offset(rRow) rRow = Application.CountA(.[B:B])-1 .[A2:A3].AutoFill .[A2].Resize(rRow), 0 .[F2:I3].AutoFill .[F2:I3].Resize(rRow), 0 .[B2:E2].AutoFill .[B2:E2].Resize(rRow), 3 End With Application.CutCopyMode = 0: wsh.Activate Set wsh = Nothing: Set wsh1 = Nothing: Set wsh2 = Nothing err: With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
Sub сортировка() ' ' сортировка Макрос ' With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With With Sheets("Лист1").[C4:D29].Rows .Parent.Outline.ShowLevels .OutlineLevel .Sort [D4], 2 .Parent.Outline.ShowLevels .OutlineLevel - 1 End With With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
[vba]
Код
Sub сортировка() ' ' сортировка Макрос ' With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With With Sheets("Лист1").[C4:D29].Rows .Parent.Outline.ShowLevels .OutlineLevel .Sort [D4], 2 .Parent.Outline.ShowLevels .OutlineLevel - 1 End With With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub