Пути повышения наглядности сложной формулы в 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
(ссылка)
Без заголовка
Как решить задачу двумерного массива? Доказать является ли данная квадратная матрица симметрической относительно побочной диагонали.
настроение: Внимательное
Как воспользоваться циклом при именовании адресов ячеек
Привет Всем! Заранее буду очень признателен за оказанную помощь.
Есть таблица расчета, где в ячейках по горизонтали введены буквы А, В, С и т.д, а по вертикали 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
Полезные сайти по 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
Рисование в 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,
работает нормально, но только с одним файлом.
как записать в коде наличие клавиши 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
Но как это сделать?
как повернуть линиию относительно любой опорной точки
Здравствуйте, уважаемые любители 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
Александр Липчук,
05-08-2010 23:28
(ссылка)
Простой Excel
Я вот тут голову ломаю, не получается.
Как из двух таблиц №1 и №2 сделать одну №3 с помощью функций (ВПР, ЕСЛИ, Просмотр и т.д.) Excel.
Например:
№1
А
Б
В
Г
и №2
А
Б
Д
Е
Получить №3
А
Б
В
Г
Д
Е
Как из двух таблиц №1 и №2 сделать одну №3 с помощью функций (ВПР, ЕСЛИ, Просмотр и т.д.) Excel.
Например:
№1
А
Б
В
Г
и №2
А
Б
Д
Е
Получить №3
А
Б
В
Г
Д
Е
настроение: Веселое
Метки: excel
Илья 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
Буду благодарен за комменты и идеи
Александр Липчук,
06-02-2010 02:06
(ссылка)
Сообщество гибнет?
Если мы не идем вперед, значит мы погибаем. Кто что скажет интересного на эту тему?
настроение: Задумчивое
Метки: excel, VBA, программирование
Александр Липчук,
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
Вопрос: относительный адрес
Всем привет!
Как в VBA прописывается относительный одрес? Пробовал "\имя файла" - выдает ошибку.
Как в VBA прописывается относительный одрес? Пробовал "\имя файла" - выдает ошибку.
Как сделать окно 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: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: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: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: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
Артур 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, программирование
В этой группе, возможно, есть записи, доступные только её участникам.
Чтобы их читать, Вам нужно вступить в группу
Чтобы их читать, Вам нужно вступить в группу