Пути повышения наглядности сложной формулы в Excel
Привет Всем!
Есть достаточно сложная формула, которую нужно разбить на строки для наглядности чтения и удобства внесения изменений.
Worksheets("Лист1").Range("AbsUn0").FormulaR1C1 = _
"=ROUND(МНИМ.ABS(МНИМ.ДЕЛ(МНИМ.ПРОИЗВЕД(КОМПЛЕКСН(ReZB,ImZB),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),МНИМ.СУММ(КОМПЛЕКСН(ReZB,ImZB),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1))),3)"
Попробовал сделать вот так, но формула высвечивается красным цветом, что указывает на ошибку:
Worksheets("Лист1").Range("AbsUn0").FormulaR1C1 = _
"=ROUND(МНИМ.ABS(МНИМ.ДЕЛ(МНИМ.ПРОИЗВЕД(КОМПЛЕКСН(ReZB,ImZB), _ КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),МНИМ.СУММ(КОМПЛЕКСН(ReZB,ImZB), _
КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1))),3)"
Есть достаточно сложная формула, которую нужно разбить на строки для наглядности чтения и удобства внесения изменений.
Worksheets("Лист1").Range("AbsUn0").FormulaR1C1 = _
"=ROUND(МНИМ.ABS(МНИМ.ДЕЛ(МНИМ.ПРОИЗВЕД(КОМПЛЕКСН(ReZB,ImZB),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),МНИМ.СУММ(КОМПЛЕКСН(ReZB,ImZB),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1))),3)"
Попробовал сделать вот так, но формула высвечивается красным цветом, что указывает на ошибку:
Worksheets("Лист1").Range("AbsUn0").FormulaR1C1 = _
"=ROUND(МНИМ.ABS(МНИМ.ДЕЛ(МНИМ.ПРОИЗВЕД(КОМПЛЕКСН(ReZB,ImZB), _ КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),МНИМ.СУММ(КОМПЛЕКСН(ReZB,ImZB), _
КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1)),КОМПЛЕКСН(ReZэкb1c1,ImZэкb1c1))),3)"
Анастасия Глебова,
13-04-2012 11:10
(ссылка)
Без заголовка
Как решить задачу двумерного массива? Доказать является ли данная квадратная матрица симметрической относительно побочной диагонали.
настроение: Внимательное
как повернуть линиию относительно любой опорной точки
Здравствуйте, уважаемые любители VBA!
Мне очень бы хотелось получить
ответ на следующий вопрос или хотя бы, чтобы кто-то натолкнул на
правильный путь решения данной задачи.
В Excel с помощью VBA мне
нужно по большому счету создавать электрические схемы, поскольку я
хочу, чтобы просчитав параметры схемы в Excel рисовалась тут же схема,
не прибегая непосредственно к рисованию.
Мне нужно решить простую задачу, а именно:
нарисовать
линию или фигуру и повернуть ее. Но повернуть нужно программно не
относительно середины, как это делает Excel, а относительно конца линии
или любой опорной точки, которую я например хотел бы выбрать.
Повернуть линию относительно конца в Excel можно, нажав при повороте клавишу Shift, а как это сделать программно я не знаю.
Приведу
следующий код, где рисуется серия линий по кругу, но поворачиваются они
относительно середины, а мне нужно, чтобы опорная точка была на конце
линии.
Sub Поворот()
'
'19.10.2010
' Макрос записан 18.10.2005 (1)
'
For i = 10 To 200 Step 30
With ActiveSheet.Shapes.AddLine(200, 200, 300, 200)
.Select
With Selection.ShapeRange
With .Line
.Weight = 0.75
.DashStyle = msoLineSolid
.Style = msoLineSingle
.Transparency = 0#
.Visible = msoTrue
.ForeColor.SchemeColor = 14
End With
.LockAspectRatio = msoTrue
.Height = 0#
.Width = 99.75
.Rotation = i
End With
End With
Next i
End Sub
Мне очень бы хотелось получить
ответ на следующий вопрос или хотя бы, чтобы кто-то натолкнул на
правильный путь решения данной задачи.
В Excel с помощью VBA мне
нужно по большому счету создавать электрические схемы, поскольку я
хочу, чтобы просчитав параметры схемы в Excel рисовалась тут же схема,
не прибегая непосредственно к рисованию.
Мне нужно решить простую задачу, а именно:
нарисовать
линию или фигуру и повернуть ее. Но повернуть нужно программно не
относительно середины, как это делает Excel, а относительно конца линии
или любой опорной точки, которую я например хотел бы выбрать.
Повернуть линию относительно конца в Excel можно, нажав при повороте клавишу Shift, а как это сделать программно я не знаю.
Приведу
следующий код, где рисуется серия линий по кругу, но поворачиваются они
относительно середины, а мне нужно, чтобы опорная точка была на конце
линии.
Sub Поворот()
'
'19.10.2010
' Макрос записан 18.10.2005 (1)
'
For i = 10 To 200 Step 30
With ActiveSheet.Shapes.AddLine(200, 200, 300, 200)
.Select
With Selection.ShapeRange
With .Line
.Weight = 0.75
.DashStyle = msoLineSolid
.Style = msoLineSingle
.Transparency = 0#
.Visible = msoTrue
.ForeColor.SchemeColor = 14
End With
.LockAspectRatio = msoTrue
.Height = 0#
.Width = 99.75
.Rotation = i
End With
End With
Next i
End Sub
Как воспользоваться циклом при именовании адресов ячеек
Привет Всем! Заранее буду очень признателен за оказанную помощь.
Есть таблица расчета, где в ячейках по горизонтали введены буквы А, В, С и т.д, а по вертикали U, argU и т.д .
A B C N AB BC CA aa1 bb1 cc1 a1 b1 c1 n1 a1b1 b1c1 c1a1 aa2 bb2 cc2 a2 ..
U UA
argU
ReU
ImU ImAB
I
argI
ReI
ImI
и т.д.
Как можно сделать, чтобы на пересечении А и U и т.д. адрес ячейки назывался, например не B2, а UA или ImAB.
Попробовал записать макрос, при именовании ячейки D8, он мне выдал следующее
Sub Макрос 9()
Range("D8").Select
ActiveWorkbook.Names.Add Name:="phUA", RefersToR1C1:="=Лист1!R8C4"
End Sub
Попробовал написать программку для трех, но RefersToR1C1:="=Лист1R6C&dc" не реагирует на переменную dc
Sub ProgNAMES()
Dim dc As Integer, i As Integer
Dim phase As Variant
phase = Array(Array("A", "B", "C", "N", "AB", "BC", "CA", _
"aa1", "bb1", "cc1", _
"a1", "b1", "c1", "n1", "a1b1", "b1c1", "c1a1", _
"aa2", "bb2", "cc2", _
"a2", "b2", "c2", "n2", "a2b2", "b2c2", "c2a2"), _
Array("U", "argU", "ReU", "ImU"), _
Array("I", "argI", "ReI", "ImI"), _
Array("Z", "argZ", "ReZ", "ImZ"), _
Array("Y", "argY", "ReY", "ImY"), _
Array("Zýê", "argZýê", "ReZýê", "ImZýê"))
For i = 0 To 3
dc = 2 + i
Range("B6").Select
ActiveWorkbook.Worksheets(Лист1!).Names.Add Name:="ph" & phase(1)(0) & phase(0)(i), RefersToR1C1:="=Лист1!R6C&dc"
Next i
End Sub
Что-то не получается правильно сделать
Есть таблица расчета, где в ячейках по горизонтали введены буквы А, В, С и т.д, а по вертикали U, argU и т.д .
A B C N AB BC CA aa1 bb1 cc1 a1 b1 c1 n1 a1b1 b1c1 c1a1 aa2 bb2 cc2 a2 ..
U UA
argU
ReU
ImU ImAB
I
argI
ReI
ImI
и т.д.
Как можно сделать, чтобы на пересечении А и U и т.д. адрес ячейки назывался, например не B2, а UA или ImAB.
Попробовал записать макрос, при именовании ячейки D8, он мне выдал следующее
Sub Макрос 9()
Range("D8").Select
ActiveWorkbook.Names.Add Name:="phUA", RefersToR1C1:="=Лист1!R8C4"
End Sub
Попробовал написать программку для трех, но RefersToR1C1:="=Лист1R6C&dc" не реагирует на переменную dc
Sub ProgNAMES()
Dim dc As Integer, i As Integer
Dim phase As Variant
phase = Array(Array("A", "B", "C", "N", "AB", "BC", "CA", _
"aa1", "bb1", "cc1", _
"a1", "b1", "c1", "n1", "a1b1", "b1c1", "c1a1", _
"aa2", "bb2", "cc2", _
"a2", "b2", "c2", "n2", "a2b2", "b2c2", "c2a2"), _
Array("U", "argU", "ReU", "ImU"), _
Array("I", "argI", "ReI", "ImI"), _
Array("Z", "argZ", "ReZ", "ImZ"), _
Array("Y", "argY", "ReY", "ImY"), _
Array("Zýê", "argZýê", "ReZýê", "ImZýê"))
For i = 0 To 3
dc = 2 + i
Range("B6").Select
ActiveWorkbook.Worksheets(Лист1!).Names.Add Name:="ph" & phase(1)(0) & phase(0)(i), RefersToR1C1:="=Лист1!R6C&dc"
Next i
End Sub
Что-то не получается правильно сделать
настроение: Надеющееся
Ирина Муратшина,
03-03-2012 20:49
(ссылка)
как изменить программу?
Данная программа получает сумму
элементов наборов блоков ячеек.
Как изменить её чтобы она получала сумму
квадратов элементов блока ячеек.
Sub t()
Dim Cell As Range, d As Integer, dd As Integer, Product As Single
Product = 1
Метка:
d = MsgBox(Title:="Наборы блоков ячеек", _
Prompt:="Имеются блоки ячеек?", _
Buttons:=4)
Select Case d
Case vbYes
Set Cell = Application.InputBox("Укажите нужный диапазон", "Выбор диапазона", Selection.Address, , , , , 8)
Range(Cell.Address).Select
For Each Cell In Selection.Cells
Product = Product * Cell
Next
GoTo Метка
Case vbNo
dd = MsgBox(Title:="Результаты расчетов", _
Prompt:="Произведение элементов наборов блоков ячеек равно = " & Product, _
Buttons:=0)
End Select
End Sub
элементов наборов блоков ячеек.
Как изменить её чтобы она получала сумму
квадратов элементов блока ячеек.
Sub t()
Dim Cell As Range, d As Integer, dd As Integer, Product As Single
Product = 1
Метка:
d = MsgBox(Title:="Наборы блоков ячеек", _
Prompt:="Имеются блоки ячеек?", _
Buttons:=4)
Select Case d
Case vbYes
Set Cell = Application.InputBox("Укажите нужный диапазон", "Выбор диапазона", Selection.Address, , , , , 8)
Range(Cell.Address).Select
For Each Cell In Selection.Cells
Product = Product * Cell
Next
GoTo Метка
Case vbNo
dd = MsgBox(Title:="Результаты расчетов", _
Prompt:="Произведение элементов наборов блоков ячеек равно = " & Product, _
Buttons:=0)
End Select
End Sub
Александр Липчук,
06-02-2010 02:06
(ссылка)
Сообщество гибнет?
Если мы не идем вперед, значит мы погибаем. Кто что скажет интересного на эту тему?
настроение: Задумчивое
Метки: excel, VBA, программирование
Полезные сайти по VBA в Excel
Привет Всем!
Хочу поделиться одним сайтом по программированию в Excel на VBA. Поразил он меня тем, что здесь есть оригинальные нестандартные программки, которые можно скачать бесплатно и посмотреть потом код VBA в них. Для себя нашел тему программирование автофигур на VBA в Excel, особенно поразили программы:
Фортепиано в Excel
Поиск точек на одной прямой
Простановка размеров для автофигур в Excel
Создание модели хищник-жертва средствами Excel
В общем сайт очень понравился, приглашаю всех желающих его посетить и найти для себя что-то полезное.
http://excelvba.ru
Хочу поделиться одним сайтом по программированию в Excel на VBA. Поразил он меня тем, что здесь есть оригинальные нестандартные программки, которые можно скачать бесплатно и посмотреть потом код VBA в них. Для себя нашел тему программирование автофигур на VBA в Excel, особенно поразили программы:
Фортепиано в Excel
Поиск точек на одной прямой
Простановка размеров для автофигур в Excel
Создание модели хищник-жертва средствами Excel
В общем сайт очень понравился, приглашаю всех желающих его посетить и найти для себя что-то полезное.
http://excelvba.ru
настроение: Довольное
Excel и VBA.Странность№1.Круговой массив дуг
Здравствуйте, уважаемые члены сообщества. И снова мне нужна Ваша помощь.
В следующих двух кодах на рабочем листе Excel рисуется массив дуг, повернутых наружу и внутрь.
При выполнении этих двух кодов из массива дуг, повернутых наружу и внутрь, должны сложиться окружности.
Но на листе Excel у меня получились окружности при углах 0,90,180,270,360 градусов.
При других углах дуги почему-то не стыкуются в окружности.
С чем это связано и как этого избежать?
Ниже приведу коды на VBA, где рисуется массив дуг, повернутых наружу и внутрь.
Sub ArcAroundMassiveOpen()
Dim i As Integer, k0 As Double, dn As Double, da As Double
Dim x0 As Double, y0 As Double, z As Double, R As Double
Const pi = 3.14159265358979
x0 = 300: y0 = 300: R = 100: z = 10: k0 = 30: dn = 30: da = 180
For i = k0 To 360 + k0 - dn Step dn
x1 = x0 + R * Cos(i * pi / 180): y1 = y0 - R * Sin(i * pi / 180) - z
ActiveSheet.Shapes.AddShape(msoShapeArc, x1, y1, z, z).Select
Selection.Name = "arc_" & i & "_" & dn & "_" & da
With Selection.ShapeRange.Adjustments
.Item(1) = 90 + da + i
.Item(2) = 90 + i
End With
With Selection.ShapeRange.Item("arc_" & i & "_" & dn & "_" & da)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.ForeColor.RGB = RGB(100, 80, 150)
End With
Next i
End Sub
Sub ArcAroundMassiveClose()
Dim i As Integer, k0 As Double, dn As Double, da As Double
Dim x0 As Double, y0 As Double, z As Double, R As Double
Const pi = 3.14159265358979
x0 = 300: y0 = 300: R = 100: z = 10: k0 = 30: dn = 30: da = 180
For i = k0 To 360 + k0 - dn Step dn
x1 = x0 + R * Cos(i * pi / 180): y1 = y0 - R * Sin(i * pi / 180) - z
ActiveSheet.Shapes.AddShape(msoShapeArc, x1, y1, z, z).Select
Selection.Name = "arcr_" & i & "_" & dn & "_" & da
With Selection.ShapeRange.Adjustments
.Item(1) = 90 + i
.Item(2) = 90 + da + i
End With
With Selection.ShapeRange.Item("arcr_" & i & "_" & dn & "_" & da)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.ForeColor.RGB = RGB(100, 80, 150)
End With
Next i
End Sub
В следующих двух кодах на рабочем листе Excel рисуется массив дуг, повернутых наружу и внутрь.
При выполнении этих двух кодов из массива дуг, повернутых наружу и внутрь, должны сложиться окружности.
Но на листе Excel у меня получились окружности при углах 0,90,180,270,360 градусов.
При других углах дуги почему-то не стыкуются в окружности.
С чем это связано и как этого избежать?
Ниже приведу коды на VBA, где рисуется массив дуг, повернутых наружу и внутрь.
Sub ArcAroundMassiveOpen()
Dim i As Integer, k0 As Double, dn As Double, da As Double
Dim x0 As Double, y0 As Double, z As Double, R As Double
Const pi = 3.14159265358979
x0 = 300: y0 = 300: R = 100: z = 10: k0 = 30: dn = 30: da = 180
For i = k0 To 360 + k0 - dn Step dn
x1 = x0 + R * Cos(i * pi / 180): y1 = y0 - R * Sin(i * pi / 180) - z
ActiveSheet.Shapes.AddShape(msoShapeArc, x1, y1, z, z).Select
Selection.Name = "arc_" & i & "_" & dn & "_" & da
With Selection.ShapeRange.Adjustments
.Item(1) = 90 + da + i
.Item(2) = 90 + i
End With
With Selection.ShapeRange.Item("arc_" & i & "_" & dn & "_" & da)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.ForeColor.RGB = RGB(100, 80, 150)
End With
Next i
End Sub
Sub ArcAroundMassiveClose()
Dim i As Integer, k0 As Double, dn As Double, da As Double
Dim x0 As Double, y0 As Double, z As Double, R As Double
Const pi = 3.14159265358979
x0 = 300: y0 = 300: R = 100: z = 10: k0 = 30: dn = 30: da = 180
For i = k0 To 360 + k0 - dn Step dn
x1 = x0 + R * Cos(i * pi / 180): y1 = y0 - R * Sin(i * pi / 180) - z
ActiveSheet.Shapes.AddShape(msoShapeArc, x1, y1, z, z).Select
Selection.Name = "arcr_" & i & "_" & dn & "_" & da
With Selection.ShapeRange.Adjustments
.Item(1) = 90 + i
.Item(2) = 90 + da + i
End With
With Selection.ShapeRange.Item("arcr_" & i & "_" & dn & "_" & da)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.ForeColor.RGB = RGB(100, 80, 150)
End With
Next i
End Sub
как записать в коде наличие клавиши Shift или Ctrl
Сделал следующие действия:
1) нажал клавишу Shift и нарисовал линию
2) нажал клавишу Ctrl и повернул линию относительно ее конца
Но макрос записал мне следующий код, пропустив такие важные действия как нажатие клавиш Shift и Ctrl.
Sub Macros1()
'
ActiveSheet.Shapes.AddLine(84.75, 117.75, 153#, 236.25).Select
Selection.ShapeRange.Flip msoFlipVertical
Selection.ShapeRange.IncrementRotation 25.54
End Sub
Кто может подсказать как их можно программно учесть, написав правильно выше приведенный код Macros1().
В VBA есть keycode constants. Приведу их для клавиш Shift или Ctrl
Сonstants Value Description
vbKeyShift 0x10 Shift Key
vbKeyCtrl 0x11 Ctrl Key
Но как это сделать?
1) нажал клавишу Shift и нарисовал линию
2) нажал клавишу Ctrl и повернул линию относительно ее конца
Но макрос записал мне следующий код, пропустив такие важные действия как нажатие клавиш Shift и Ctrl.
Sub Macros1()
'
ActiveSheet.Shapes.AddLine(84.75, 117.75, 153#, 236.25).Select
Selection.ShapeRange.Flip msoFlipVertical
Selection.ShapeRange.IncrementRotation 25.54
End Sub
Кто может подсказать как их можно программно учесть, написав правильно выше приведенный код Macros1().
В VBA есть keycode constants. Приведу их для клавиш Shift или Ctrl
Сonstants Value Description
vbKeyShift 0x10 Shift Key
vbKeyCtrl 0x11 Ctrl Key
Но как это сделать?
Рисование в Excel. Круговой массив объектов
Мне нужно в Excel нарисовать круговой массив линий, которые расположены
под одинаковым углом друг другу. В Excel сделал программу, но с рисунка
видно, что линии расположены как-то неравномерно в круговом массиве.
С чем это связано и как все-таки сделать, чтобы на экране монитора это выглядело правильно? Код программы ниже:
Sub RADEK()
Dim i As Integer, r As Double
Dim x0 As Double, y0 As Double, x2 As Double, y2 As Double
x0 = 300: y0 = 300
r = 150
For i = 0 To 360 Step 15
x2 = x0 + r * Cos(i): y2 = y0 + r * Sin(i)
ActiveSheet.Shapes.AddLine(x0, y0, x2, y2).Select
Selection.Name = "line_" & i
Selection.ShapeRange.Fill.Transparency = 0#
With Selection.ShapeRange.Line
.Weight = 0.75
.DashStyle = msoLineSolid
.Style = msoLineSingle
.ForeColor.RGB = RGB(100, 80, 150)
.Visible = msoTrue
End With
Next i
End Sub
под одинаковым углом друг другу. В Excel сделал программу, но с рисунка
видно, что линии расположены как-то неравномерно в круговом массиве.
С чем это связано и как все-таки сделать, чтобы на экране монитора это выглядело правильно? Код программы ниже:
Sub RADEK()
Dim i As Integer, r As Double
Dim x0 As Double, y0 As Double, x2 As Double, y2 As Double
x0 = 300: y0 = 300
r = 150
For i = 0 To 360 Step 15
x2 = x0 + r * Cos(i): y2 = y0 + r * Sin(i)
ActiveSheet.Shapes.AddLine(x0, y0, x2, y2).Select
Selection.Name = "line_" & i
Selection.ShapeRange.Fill.Transparency = 0#
With Selection.ShapeRange.Line
.Weight = 0.75
.DashStyle = msoLineSolid
.Style = msoLineSingle
.ForeColor.RGB = RGB(100, 80, 150)
.Visible = msoTrue
End With
Next i
End Sub
Аристарх Пупкин,
21-11-2010 17:50
(ссылка)
Использование GetOpenFilename с параметром MultiSelect:=True
Как использовать метод GetOpenFilename для открытия нескольких файлов.
код написал слдедующим образом:
Invoice = Application.GetOpenFilename(FileFilter:="Файлы .xls, *.xls", Title:="Открыть файлы ...", MultiSelect:=True)
Workbooks.OpenText Filename:=Invoice
но при попытке выполнить сообщается об ошибке. Без параметра - MultiSelect:=True,
работает нормально, но только с одним файлом.
код написал слдедующим образом:
Invoice = Application.GetOpenFilename(FileFilter:="Файлы .xls, *.xls", Title:="Открыть файлы ...", MultiSelect:=True)
Workbooks.OpenText Filename:=Invoice
но при попытке выполнить сообщается об ошибке. Без параметра - MultiSelect:=True,
работает нормально, но только с одним файлом.
Александр Липчук,
22-01-2010 01:17
(ссылка)
Программирование в Excel
Помогите в интересной задачке.
Мне надо сделать программу для учета продуктов и расхода. Может быть в VBAи нет проблем, но хочу проще – вExcel.
Есть перечень продуктов = 200 наименований:
1 хлеб 3 грн
2 сахар 7 грн
И т.д.
Нужно составить 50 блюд из этих продуктов.
Думаю так, чтобы легче и быстро:
Присвоить коды продуктам. Там, на другом листе, в списке блюд ввожу код и хочу получить во втором столбике наименование продукта и в третьем – цену.
И составит меню для блюда. Как связать эти 3 значения и получить их при вводе только кода продукта в любом месте. Можно конечно сделать, но много мороки. Надо просто и гениально!
Мне надо сделать программу для учета продуктов и расхода. Может быть в VBAи нет проблем, но хочу проще – вExcel.
Есть перечень продуктов = 200 наименований:
1 хлеб 3 грн
2 сахар 7 грн
И т.д.
Нужно составить 50 блюд из этих продуктов.
Думаю так, чтобы легче и быстро:
Присвоить коды продуктам. Там, на другом листе, в списке блюд ввожу код и хочу получить во втором столбике наименование продукта и в третьем – цену.
И составит меню для блюда. Как связать эти 3 значения и получить их при вводе только кода продукта в любом месте. Можно конечно сделать, но много мороки. Надо просто и гениально!
настроение: Надеющееся
Метки: программирование, excel
Александр Липчук,
22-01-2010 00:31
(ссылка)
Применение программ VBA 6 без ее установки
Привет!
Сделал программку в VBA6.0 – выбор домашнего любимца.
Но работает только у меня, где установлена эта программа.
Как сделать так, чтобы ею пользовались все, даже если нет программы?
Сделал программку в VBA6.0 – выбор домашнего любимца.
Но работает только у меня, где установлена эта программа.
Как сделать так, чтобы ею пользовались все, даже если нет программы?
настроение: Занятое
Метки: VBA, программирование, excel
Александр Липчук,
05-08-2010 23:28
(ссылка)
Простой Excel
Я вот тут голову ломаю, не получается.
Как из двух таблиц №1 и №2 сделать одну №3 с помощью функций (ВПР, ЕСЛИ, Просмотр и т.д.) Excel.
Например:
№1
А
Б
В
Г
и №2
А
Б
Д
Е
Получить №3
А
Б
В
Г
Д
Е
Как из двух таблиц №1 и №2 сделать одну №3 с помощью функций (ВПР, ЕСЛИ, Просмотр и т.д.) Excel.
Например:
№1
А
Б
В
Г
и №2
А
Б
Д
Е
Получить №3
А
Б
В
Г
Д
Е
настроение: Веселое
Метки: excel
Артур Lion,
07-05-2008 02:30
(ссылка)
Как сделать программу для рисования на форме?
Как сделать программу для рисования на форме?
Свойство формы MousePointer установим в 99-Custom.
Свойству формы MouseIcon, зададим курсор из папки:
Program Files\Microsoft Visual Studio\COMMON\Graphics\Cursors\PENCIL.cur
Подключаемые библиотеки/компоненты:
нет
Стандартные компоненты:
нет
Код:
Option Explicit
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 1 Then Form1.PSet (X, Y)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 1 Then Form1.Line -(X, Y), vbBlue
End Sub
Вопрос: относительный адрес
Всем привет!
Как в VBA прописывается относительный одрес? Пробовал "\имя файла" - выдает ошибку.
Как в VBA прописывается относительный одрес? Пробовал "\имя файла" - выдает ошибку.
Илья Surname,
11-03-2010 09:32
(ссылка)
О добавлении новых листов
Передо мной встала практическая задача - нужно добавить в модуль вот какую вещь - мне нужно чтобы при выполнении процедуры в текущую книгу Excel добавлялся новый лист, затем с одного из существующих листов копировался определенный диапазон на этот новый.
Возникла вот какая проблема - при создании нового листа Excel самостоятельно дает ему название например Sheet1, если же в книге уже существует лист с таким названием, то дается следующий порядковый номер, в данном случае Sheet2. Что ставит под угрозу дальнейшее использование этого нововставленного листа. Т.к. его имя часто непредсказвуемо. Например, если эта процедура уже один раз сработала создав в книге лист с названием Sheet1, и затем в ходе дальнейших действий этот Sheet1 был удален, то при повторном запуске процедуры Excel даст новому листу порядковый номер не 1 а следующий (хотя лист1 уже был удален). Что опять же затрудняет дальнейшие ссылки на вставленный процедурой лист в программе.
Идеальным решением было бы программируя добавление нового лисата в книгу, иметь возможность тут же дать ему имя по своему усмотрению. Но как это сделать? пока не знаю!
Файл в формате Excel 2003 по этой ссылке: http://files.mail.ru/T4QO4T
Буду благодарен за комменты и идеи
Возникла вот какая проблема - при создании нового листа Excel самостоятельно дает ему название например Sheet1, если же в книге уже существует лист с таким названием, то дается следующий порядковый номер, в данном случае Sheet2. Что ставит под угрозу дальнейшее использование этого нововставленного листа. Т.к. его имя часто непредсказвуемо. Например, если эта процедура уже один раз сработала создав в книге лист с названием Sheet1, и затем в ходе дальнейших действий этот Sheet1 был удален, то при повторном запуске процедуры Excel даст новому листу порядковый номер не 1 а следующий (хотя лист1 уже был удален). Что опять же затрудняет дальнейшие ссылки на вставленный процедурой лист в программе.
Идеальным решением было бы программируя добавление нового лисата в книгу, иметь возможность тут же дать ему имя по своему усмотрению. Но как это сделать? пока не знаю!
Файл в формате Excel 2003 по этой ссылке: http://files.mail.ru/T4QO4T
Буду благодарен за комменты и идеи
Как сделать окно Visual Basic в стиле Командной строки
Создайте форму и впишите код:
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Sub Form_Load()
SetWindowRgn Me.hWnd, 2, True
End Sub
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Sub Form_Load()
SetWindowRgn Me.hWnd, 2, True
End Sub
Артур Lion,
07-05-2008 02:44
(ссылка)
Как сделать массив кнопок?
Как сделать массив кнопок?
Чтобы по нажатию ALT + Цифра, происходило событие Click выбранной кнопки.
На форме создайте 1 кнопку, скопируйте в буфер, вставьте.
Basic спросит – создать массив или нет? Отвечаем, Да.
Создаем 10 кнопок, от 0 до 9.
Свойство Caption у всех очищаем.
Подключаемые библиотеки/компоненты:
нет
Стандартные компоненты:
- CommandButton;
- Label;
Код:
Option Explicit
Dim i As Byte
Public Sub Rename(Index As Byte)
Label1.Caption = "Кнопка: " & Index
End Sub
Private Sub Command1_Click(Index As Integer)
Rename (Index)
End Sub
Private Sub Form_Load()
For i = 0 To 9
Command1(i).Caption = "&" & Trim(Str(i))
Next
Label1.Caption = "Нажмите на любую кнопку"
End Sub
Артур Lion,
07-05-2008 02:49
(ссылка)
Без заголовка
Как перевести текст в разные раскладки?
Подключаемые библиотеки/компоненты:
нет
Стандартные компоненты:
- CommandButton;
- TextBox;
Код:
Option Explicit
Dim Selection As String
Dim aText As String
Dim i As Long
Private Sub RusLat()
Selection = Text1.Text
aText = Selection
Dim KeyS As String
Dim Pos As Long
KeyS = 0
Dim s(1) As String, n As String
s(0) = "qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:" + Chr(34) + "ZXCVBNM<>~"
s(1) = "йцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ"
If Asc(Left(aText, 1)) > 127 Then KeyS = 1
For i = 1 To Len(aText)
Pos = InStr(s(KeyS), Mid(aText, i, 1))
If Pos = 0 Then n = n + Mid(aText, i, 1) Else n = n + Mid(s(1 - KeyS), Pos, 1)
Next i
aText = n
Text1.Text = aText
End Sub
Private Sub Command1_Click()
Call RusLat
End Sub
Private Sub Form_Load()
Text1.Text = "qwerty"
End Sub
Артур Lion,
07-05-2008 02:56
(ссылка)
Без заголовка
Сравнение файлов на идентичность
Private Sub Form_Load()
'замените пути файлов, которые вы хотите сравнить
Open "C:\1\convert1bmp.htm" For Binary As #1
Open "C:\1\convert2bmp.htm" For Binary As #2
issame% = True
If LOF(1) > LOF(2) Then
issame% = False
Else
whole& = LOF(1) \ 10000
part& = LOF(1) Mod 10000
buffer1$ = String$(10000, 0)
buffer2$ = String$(10000, 0)
start& = 1
For X& = 1 To whole&
Get #1, start&, buffer1$
Get #2, start&, buffer2$
If buffer1$ > buffer2$ Then
issame% = False
Exit For
End If
start& = start& + 10000
Next
buffer1$ = String$(part&, 0)
buffer2$ = String$(part&, 0)
Get #1, start&, buffer1$
Get #2, start&, buffer2$
If buffer1$ > buffer2$ Then issame% = False
End If
Close
If issame% Then
MsgBox "Файлы идентичны", 64, "Info"
Else
MsgBox "Файлы НЕ идентичны", 16, "Info"
End If
End Sub
Артур Lion,
07-05-2008 02:26
(ссылка)
Перемещение картинки
Перемещение картинки
Option Explicit
Dim downX, downY
Private Sub Image1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
downX = X
downY = Y
End Sub
Private Sub Image1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Image1.Left = Image1.Left + X - downX
Image1.Top = Image1.Top + Y - downY
End If
End Sub
Метки: VBA, программирование
В этой группе, возможно, есть записи, доступные только её участникам.
Чтобы их читать, Вам нужно вступить в группу
Чтобы их читать, Вам нужно вступить в группу