Здравствуйте Можно как-то так В модуль ЭтаКнига [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) With Target If .NumberFormat = "[h]:mm:ss" And Int(.Value) = .Value Then Application.EnableEvents = False .Formula = Format(.Formula, "00:00:00") .NumberFormat = "[h]:mm:ss" Application.EnableEvents = True End If End With End Sub
[/vba]
Здравствуйте Можно как-то так В модуль ЭтаКнига [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) With Target If .NumberFormat = "[h]:mm:ss" And Int(.Value) = .Value Then Application.EnableEvents = False .Formula = Format(.Formula, "00:00:00") .NumberFormat = "[h]:mm:ss" Application.EnableEvents = True End If End With End Sub
Option Explicit 'константы для функций API Private Const GWL_STYLE As Long = -16& 'для установки нового вида окна Private Const GWL_EXSTYLE = -20& 'для расширенного стиля окна Private Const WS_CAPTION As Long = &HC00000 'определяет заголовок Private Const WS_BORDER As Long = &H800000 'определяет рамку формы
'Функции API, применяемые для поиска окна и изменения его стиля #If VBA7 Then Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr Private Declare PtrSafe Sub ReleaseCapture Lib "user32" ()
Dim ihWnd As LongPtr #Else Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "user32" ()
Dim ihWnd As Long #End If
Private Sub UserForm_Initialize() Dim hStyle 'ищем окно формы среди всех открытых окон If VAL(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) 'для Excel 97 Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) 'для Excel 2000 и выше End If 'получаем информацию о найденном окне(стили и т.д.) hStyle = GetWindowLong(ihWnd, GWL_STYLE) 'назначаем переменной новый стиль для окна формы hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER 'изменяем вид окна: убираем меню(заголовок) и рамку SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 'перерисовываем форму, точнее строку меню(заголовка) DrawMenuBar ihWnd 'меняем размер формы, т.к. сделали смещение элементов формы вверх на высоту заголовка Me.Height = Me.Height + GWL_EXSTYLE End Sub
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then ReleaseCapture SendMessage ihWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& End If End Sub
Private Sub ЗАКРЫТЬ_Click() Unload Me End Sub
[/vba]
[vba]
Код
Option Explicit 'константы для функций API Private Const GWL_STYLE As Long = -16& 'для установки нового вида окна Private Const GWL_EXSTYLE = -20& 'для расширенного стиля окна Private Const WS_CAPTION As Long = &HC00000 'определяет заголовок Private Const WS_BORDER As Long = &H800000 'определяет рамку формы
'Функции API, применяемые для поиска окна и изменения его стиля #If VBA7 Then Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr Private Declare PtrSafe Sub ReleaseCapture Lib "user32" ()
Dim ihWnd As LongPtr #Else Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "user32" ()
Dim ihWnd As Long #End If
Private Sub UserForm_Initialize() Dim hStyle 'ищем окно формы среди всех открытых окон If VAL(Application.Version) < 9 Then ihWnd = FindWindow("ThunderXFrame", Me.Caption) 'для Excel 97 Else ihWnd = FindWindow("ThunderDFrame", Me.Caption) 'для Excel 2000 и выше End If 'получаем информацию о найденном окне(стили и т.д.) hStyle = GetWindowLong(ihWnd, GWL_STYLE) 'назначаем переменной новый стиль для окна формы hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER 'изменяем вид окна: убираем меню(заголовок) и рамку SetWindowLong ihWnd, GWL_STYLE, hStyle SetWindowLong ihWnd, GWL_EXSTYLE, 0 'перерисовываем форму, точнее строку меню(заголовка) DrawMenuBar ihWnd 'меняем размер формы, т.к. сделали смещение элементов формы вверх на высоту заголовка Me.Height = Me.Height + GWL_EXSTYLE End Sub
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then ReleaseCapture SendMessage ihWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& End If End Sub
Sub ertert() Dim wsh As Worksheet, dt As Date, x, y(), i&, k& dt = Range("A1").Value Range("A1").CurrentRegion.Offset(1).ClearContents
For Each wsh In ThisWorkbook.Sheets If Not wsh Is ActiveSheet Then x = wsh.Range("I1").CurrentRegion.Value If Not IsEmpty(x) Then k = 0 ReDim y(1 To UBound(x), 1 To 4) For i = 1 To UBound(x) Step 2 If x(i, 1) = dt Then k = k + 1 y(k, 1) = dt y(k, 2) = x(i + 1, 1) y(k, 3) = x(i, 2) y(k, 4) = x(i + 1, 2) End If Next i End If If k > 0 Then Cells(Rows.Count, 2).End(xlUp)(2, 1).Resize(k, 4).Value = y() End If Next wsh
[/vba]
как-то так должно быть[vba]
Код
Sub ertert() Dim wsh As Worksheet, dt As Date, x, y(), i&, k& dt = Range("A1").Value Range("A1").CurrentRegion.Offset(1).ClearContents
For Each wsh In ThisWorkbook.Sheets If Not wsh Is ActiveSheet Then x = wsh.Range("I1").CurrentRegion.Value If Not IsEmpty(x) Then k = 0 ReDim y(1 To UBound(x), 1 To 4) For i = 1 To UBound(x) Step 2 If x(i, 1) = dt Then k = k + 1 y(k, 1) = dt y(k, 2) = x(i + 1, 1) y(k, 3) = x(i, 2) y(k, 4) = x(i + 1, 2) End If Next i End If If k > 0 Then Cells(Rows.Count, 2).End(xlUp)(2, 1).Resize(k, 4).Value = y() End If Next wsh
Function ЗаменитьБукву$(s$) With CreateObject("scriptcontrol") .Language = "JScript" ЗаменитьБукву = .eval("'" & s & "'.replace(/(?:^|\b)([a-z])/gi, " & _ "function(a) { return a.toUpperCase(); })") End With End Function
[/vba]
и я того же мнения [vba]
Код
Function ЗаменитьБукву$(s$) With CreateObject("scriptcontrol") .Language = "JScript" ЗаменитьБукву = .eval("'" & s & "'.replace(/(?:^|\b)([a-z])/gi, " & _ "function(a) { return a.toUpperCase(); })") End With End Function
Private Sub TextBox1_Change() If Not IsNumeric(TextBox1) Or Val(TextBox1) <= 0 Then Exit Sub Лист2.[C6:C8] = Application.Transpose(Лист1.[B4:D4].Offset(TextBox1)) End Sub
[/vba]
Здравствуйте. Можно как-то так [vba]
Код
Private Sub TextBox1_Change() If Not IsNumeric(TextBox1) Or Val(TextBox1) <= 0 Then Exit Sub Лист2.[C6:C8] = Application.Transpose(Лист1.[B4:D4].Offset(TextBox1)) End Sub
Sub vvv() Dim v As Variant On Error Resume Next With Selection For Each v In Array("авто*", "Метла", "61??", ChrW(157)) .Replace v, "=xfd1", xlWhole, searchformat:=False Intersect([xfd1].Dependents, .Cells).Delete xlUp Next End With End Sub
для начала нужно выделить ячейку с этим символом, в VBE в окно Immediate(если его нету, нажать Ctrl+G для отобраения) ввести ?ascw(selection) и нажать Enter Полученное число вставить в функцию ChwW() вместо 157
[vba]
Код
Sub vvv() Dim v As Variant On Error Resume Next With Selection For Each v In Array("авто*", "Метла", "61??", ChrW(157)) .Replace v, "=xfd1", xlWhole, searchformat:=False Intersect([xfd1].Dependents, .Cells).Delete xlUp Next End With End Sub
для начала нужно выделить ячейку с этим символом, в VBE в окно Immediate(если его нету, нажать Ctrl+G для отобраения) ввести ?ascw(selection) и нажать Enter Полученное число вставить в функцию ChwW() вместо 157krosav4ig
Sub Макрос1() Application.ScreenUpdating = False Dim sh As Shape On Error Resume Next Set sh = ActiveSheet.Shapes("Вставленный") Do Until sh Is Nothing sh.Delete Set sh = Nothing Set sh = ActiveSheet.Shapes("Вставленный") Loop End Sub
[/vba]
или так [vba]
Код
Sub Макрос1() Application.ScreenUpdating = False Dim sh As Shape On Error Resume Next Set sh = ActiveSheet.Shapes("Вставленный") Do Until sh Is Nothing sh.Delete Set sh = Nothing Set sh = ActiveSheet.Shapes("Вставленный") Loop End Sub
Sub vvv() With Selection .Replace "Автомобиль", "=xx1", xlWhole Intersect([xx1].Dependents, .Cells).Delete xlUp With .SpecialCells(xlCellTypeConstants, 1) Set r = .Find("?", , xlValues, xlWhole, Searchformat:=False) Do While Not r Is Nothing r.Formula = Format(r, "'00") Set r = .FindNext(r) Loop End With End With End Sub
[/vba]
до кучи [vba]
Код
Sub vvv() With Selection .Replace "Автомобиль", "=xx1", xlWhole Intersect([xx1].Dependents, .Cells).Delete xlUp With .SpecialCells(xlCellTypeConstants, 1) Set r = .Find("?", , xlValues, xlWhole, Searchformat:=False) Do While Not r Is Nothing r.Formula = Format(r, "'00") Set r = .FindNext(r) Loop End With End With End Sub