With Command1
.Caption = "1"
With Command2
.Caption = "2"
End With
End With
Private Sub Worksheet_Activate()
With Worksheets(1).Range("A1:A2")
.Value = "1"
With Worksheets(2).Range("B1:B2")
.Value = "2"
End With
End With
End Sub
With Command
.Item(0).Caption = "1"
.Item(1).Caption = "2"
End With
Private Sub Worksheet_Activate()
With Worksheets
.Item(1).Name = "1"
.Item(2).Name = "2"
End With
End Sub
ger_kar писал(а):эти ограничения обойти раз плюнуть .
Да с треугольником засада, если я такой когда нибудь нарисую, то можно сразу будет номинироваться на Нобелевскую премию по геометрии А вот с With я думаю можно было бы попытаться, чтобы например можно было писать так:Хакер писал(а):Не надо придумывать ограничения там, где их нет. То, что у треугольника нет двух тупых углов, это не кем-то придуманное ограничение, это данность.И обойти его нельзя, имея даже самое крутое визуальное воображение. Но если кто-то нарисует, то пожалуйста.
Private Sub Worksheet_Activate()
With Worksheets.Item(1) as 1, Worksheets.Item(2) as 2
1.Name = "1"
2.Name = "2"
End With
End Sub
ger_kar писал(а):а вот если бы можно было бы использовать With в таком примере как у меня
ger_kar писал(а):то было бы классно. Вы не находите ?
Хакер писал(а):И обойти его нельзя, имея даже самое крутое визуальное воображение. Но если кто-то нарисует, то пожалуйста.
А мне все равно нравитсяХакер писал(а):Я нахожу это отвратительным.
Хакер писал(а):Почему бы тогда просто не объявить соотв. переменные?
Ну как раз этим и отличается, что в VB переменная не может начинаться с цифры (скобки [] не в счет), да плюс к тому же она находится в блоке With ... End With, соответственно по этим признакам ее и идентифицировать.Хакер писал(а):Как отличить переменную 1 от строчной метки 1?
Не использовать такие идентификаторы если предполагается юзать числа с плавающей запятой.Хакер писал(а):Как понять, где 1.e+3 — это твой чудо-подход, а где просто альтернативная запись числа 1000?
ger_kar писал(а): тем более зачем вводить лишние переменные
Да, но при этом читабельность кода не страдает, т.е. проблема не в создании самой переменной, а в том, что бы не загромождать код с ее объявлением, присвоением, обнулением. ИМХО если сама переменная в логике работы не нужна, то использование With гораздо удобнее.Хакер писал(а):Можно подумать With не создаёт ту же самую переменную
with record, other_record, object do
begin
a := 1; //record.a
b := 2; //other_record.b
c := 3; //object.c
end;
Хакер писал(а):Мало кто имеет в виду сферическую геометрию вместо евклидовой, когда говорит о фигурах.
ger_kar писал(а):Ну представляется нечто похожее на треугольник (не знаю можно ли его так назвать) вобщем если к дуге опоясывающей шар по экватору под углом 90 градусов пришпандорить два отрезка, которые вверху также сходятся под углом 90 гр.
Random писал(а):Если причина Вашего недовольства повторяющиеся километровые пути к нужным медам/свойствам, можно использовать переменные объектных типов.
Dim a As App: Set a = App
Debug.Print a.EXEName
Debug.Print a.Comments
Set a = Nothing
Zenitchik писал(а):Если Вам религия не позволяет объявлять однобуквенные переменные
если некая переменная используется только в ограниченном фрагменте кода, и этот фрагмент кода можно охватить одним взглядом - такая переменная ОБЯЗАНА быть однобуквенной.
ger_kar писал(а):можно заменить блок With ... End With
Да, по принципу действия совпадает, но немного отличается по написанию . Вот Хакер ругается на волшебные константы, вместо именованных, хотя суть действия от этого не меняется. Я считаю ту запись, которую я привел, вполне удобоваримой, но это мое мнение, а что думают другие? Конечно в приведенном примере, я просто привел альтернативную запись, которую можно расширить и написать например так (VBA Excel):ark писал(а):With ... End With именно так и делает. Тютелька в тютельку
Dim a As WorkSheet: Set a = WorkSheet(1)
Dim b As WorkSheet: Set a = WorkSheet(2)
a.Range ("A5") = b.Range ("B10")
a.Range ("A10") = b.Range ("B20")
Set a = Nothing: Set b = Nothing
А следует бить линейкой по пальцам.ger_kar писал(а):Вот Хакер ругается на волшебные константы
Меняется суть восприятия. Но это мелочь. Главное, если константа изменилась, при наличии имени ее нужно изменить в одном месте, а не 100500 с возможностью прошляпить пару-тройку мест и иметь потрясающий секс с трудно вылавливаемыми багами.хотя суть действия от этого не меняется
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4