Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
1

Как в пределах создного диапозона, сделать границы для трех идущих подряд ячеек

10.02.2012, 16:10. Показов 2956. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

У меня два вопроса, как в пределах создного диапозона(обращаясь к ним через диапозон), сделать для трех идущих подряд ячеек границы?

Как их объеденить?

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2012, 16:10
Ответы с готовыми решениями:

Поиск трех нечетных чисел, идущих подряд
Напишите программу которая найдет три нечетных числа, идущих подряд, для которых правдивы...

Создание документа Excel. Как сделать границы ячеек?
Помогите пожалуйста. Пишу скрипт VBS. Set Excel = CreateObject("Excel.Application")

Вывести все комбинации из трех чисел идущих подряд
здравствуйте подскажите в чем ошибка вот задача Дан вектор {0, 1, 3, 3, 6, 10, 12, 13, 15, 50}....

Найти все символы, кроме трех идущих подряд
ребят подскажите как реализовать следующее. в символьном классе нужно определить: *все кроме 3ех...

26
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.02.2012, 16:24 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub aa()
With [B2].Range(Cells(1, 1), Cells(1, 3)).Borders '1,1 как стартовая позиция, относительно B2
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
 
Sub bb()
[B2].Range(Cells(1, 1), Cells(1, 3)).Merge
End Sub
 
'или по-вертикали Cells(1, 1), Cells(3, 1)
1
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 16:36  [ТС] 3
Если конкретней, то я начал изучать VBA и пытаюсь написать простенькую програмку, которая выводит на листе Excel надпись введенную пользователем. Соответственно, подкаждую букву введенную пользователем я определяю диапозон значений. Но для некоторых букв, мне в нутри диапозона нужно создать еще один диапозон и например, выделить его другим цветом или типом линии.

Добавлено через 50 секунд
Цитата Сообщение от Diskretor Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub aa()
With [B2].Range(Cells(1, 1), Cells(1, 3)).Borders '1,1 как стартовая позиция, относительно B2
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
 
Sub bb()
[B2].Range(Cells(1, 1), Cells(1, 3)).Merge
End Sub
 
'или по-вертикали Cells(1, 1), Cells(3, 1)
[B2] - это как раз первый диапозон,да?
0
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 17:09  [ТС] 4
все очень просто, пользователю предлагается ввести в InputBox() фразу, и программка рисует на листе Excel набранные буквы разноцветными квадратиками... Так как цель всего этого разобраться в VBA,то я создал пользовательский класс, в котором сосдается новый лист для всего в.у. и для каждой буквы алфавита прописывается процедура (внутри класса) которая рисует эту букву. Певрое что я делаю, это считаю кол-во букв, потом в цикле сравниваю каждую букву с буквой алфавита и если они совпадают Бум!)) вызываю соответствующую процедуру, которая рисует мне ее)) Рисовние происходит следующим образом, в процедуру передается вся строка и счетчик, процедура выделяет диапозон и работая внутри диапозона рисует ее... пфу.. вот))
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.02.2012, 18:04 5
Цитата Сообщение от Diskretor Посмотреть сообщение
[B2].Range...
Да, B2 - это начальная ячейка.
Можно ее записать хоть Range("B2"), можно [B2:Q20], где например
Range("B2:Q20").Cells(3,2) будет означать позицию y=3, x=2 относительно стартовой ячейки B2.
При этом Q20 не играет никакой роли, значение x, y относительно B2 может превышать конечный Range.
Можно еще воспользоваться такой записью:
Visual Basic
1
2
Set Zone = Range("B2")
Zone.Range("B2") = 3 'запись будет произведена в ячейку С3 (B2+B2)
Все это называется относительная адресация.

Согласен с аналитика, не все здесь такие эксперты в классах. И очень хотелось бы посмотреть как Вы это реализовуете на них даже в сыром варианте.
Выложите пример и допишите недостающую часть комментариями к коду.

Цитата Сообщение от Don Vito Посмотреть сообщение
рисует...буквы...квадратиками
О_о

В общем немного понятно, но очень приблизительно. Если б еще и картинку того, того что должно получится.
1
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 18:18  [ТС] 6
Цитата Сообщение от Diskretor Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub aa()
With [B2].Range(Cells(1, 1), Cells(1, 3)).Borders '1,1 как стартовая позиция, относительно B2
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
 
Sub bb()
[B2].Range(Cells(1, 1), Cells(1, 3)).Merge
End Sub
 
'или по-вертикали Cells(1, 1), Cells(3, 1)
Сделал вот так:
Visual Basic
1
2
3
4
5
6
With [Äèàïîçîí].Range(Cells(1, 1), Cells(5, 1)).Borders
 
.LineStyle = xlContinuous
.Weight = xlMidle
 
End With
выдает ошибку

"нельзя установить свойствой Weight для класса Boarders"

Добавлено через 4 минуты
Цитата Сообщение от Diskretor Посмотреть сообщение
Да, B2 - это начальная ячейка.
Можно ее записать хоть Range("B2"), можно [B2:Q20], где например
Range("B2:Q20").Cells(3,2) будет означать позицию y=3, x=2 относительно стартовой ячейки B2.
При этом Q20 не играет никакой роли, значение x, y относительно B2 может превышать конечный Range.
Можно еще воспользоваться такой записью:
Visual Basic
1
2
Set Zone = Range("B2")
Zone.Range("B2") = 3 'запись будет произведена в ячейку С3 (B2+B2)
Все это называется относительная адресация.

Согласен с аналитика, не все здесь такие эксперты в классах. И очень хотелось бы посмотреть как Вы это реализовуете на них даже в сыром варианте.
Выложите пример и допишите недостающую часть комментариями к коду.


О_о

В общем немного понятно, но очень приблизительно. Если б еще и картинку того, того что должно получится.
Visual Basic
1
2
3
4
5
6
7
Dim My_Phrase As Object
 
Sub Alph()
 
Set My_Phrase = New Alphavit
 
End Sub
класс:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
Dim Fun_Alphavit As Worksheet
Dim Sentence As String
Dim ln As Integer
 
 
Private Sub Class_Initialize()
 
 
Dim sh_count As Integer
 
Set Fun_Alphavit = Worksheets.Add
 
Fun_Alphavit.Name = "Ñìåøíîé Àëôàâèò"
 
'Sentence = InputBox("Ââåäèòå ôðàçó:", "Ñìåøíîé Àëôàâèò")
 
'ln = Len(Sentence)
 
Worksheets.Item("Ñìåøíîé Àëôàâèò").Cells.Interior.ColorIndex = 6
 
Call À(Sentence, 1)
 
Call Á(Sentence, 2)
 
For i = 1 To ln
    
    'If Mid(Sentence, i, 1) Like "À" Then Call À(Sentence, i)
        If Mid(Sentence, i, 1) Like "Á" Then
           Call Á(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Â" Then
           Call Â(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ã" Then
           Call Ã(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ä" Then
           Call Ä(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Å" Then
           Call Å(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Æ" Then
           Call Æ(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ç" Then
           Call Ç(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "È" Then
            Call È(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ê" Then
            Call Ê(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ë" Then
            Call Ë(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ì" Then
            Call Ì(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Í" Then
            Call Í(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Î" Then
           Call Î(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ï" Then
           Call Ï(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ð" Then
           Call Ð(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ñ" Then
           Call Ñ(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ò" Then
           Call Ò(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ó" Then
           Call Ó(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ô" Then
           Call Ô(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Õ" Then
           Call Õ(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ö" Then
           Call Ö(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "×" Then
           Call ×(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ø" Then
           Call Ø(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ù" Then
          Call Ù(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ú" Then
           Call Ú(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Û" Then
           Call Û(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ü" Then
           Call Ü(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Ý" Then
           Call Ý(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "Þ" Then
           Call Þ(Sentence, i)
        ElseIf Mid(Sentence, i, 1) Like "ß" Then
           Call ß(Sentence, i)
        End If
        
Next i
 
 
End Sub
 
 
 
Sub À(D As String, b As Integer)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(5, Edn)).Name = "Äèàïîçîí"
 
[Äèàïîçîí].Cells.Interior.ColorIndex = 10
[Äèàïîçîí].Cells(5, 1).Interior.ColorIndex = 3
[Äèàïîçîí].Cells(5, 1).BorderAround Weight:=xlMedium
 
 
 
[Äèàïîçîí].Cells(3, 2).Interior.ColorIndex = 3
 
[Äèàïîçîí].Cells(3, 3).Interior.ColorIndex = 3
 
[Äèàïîçîí].Cells(3, 4).Interior.ColorIndex = 3
 
[Äèàïîçîí].Range(Cells(3, 2), Cells(3, 4)).Merge
 
[Äèàïîçîí].Range(Cells(3, 2), Cells(3, 4)).BorderAround Weight:=xlMedium
 
 
 
 
[Äèàïîçîí].Cells(1, 3).Interior.ColorIndex = 3
[Äèàïîçîí].Cells(1, 3).BorderAround Weight:=xlMedium
 
[Äèàïîçîí].Cells(5, 5).Interior.ColorIndex = 3
[Äèàïîçîí].Cells(5, 5).BorderAround Weight:=xlMedium
 
 
End Sub
 
Sub Á(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(5, Edn)).Name = "Äèàïîçîí"
 
[Äèàïîçîí].Cells.Interior.ColorIndex = 10
 
With [Äèàïîçîí].Range(Cells(1, 1), Cells(5, 1)).Borders
 
.LineStyle = xlContinuous
.Weight = xlMidle
 
End With
 
 
End Sub
 
Sub Â(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ã(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ä(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Å(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Æ(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ç(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub È(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ê(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ë(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ì(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Í(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Î(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ï(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ð(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ñ(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ò(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ó(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ô(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Õ(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ö(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub ×(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ø(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ù(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ú(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Û(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ü(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Ý(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Þ(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub ß(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Sub Space(D As String, b As Variant)
 
Dim Start, Edn As Integer
 
Start = (b - 1) * 6 + 1
Edn = Start + 5
 
Worksheets("Ñìåøíîé Àëôàâèò").Range(Worksheets("Ñìåøíîé Àëôàâèò").Cells(1, Start), Worksheets("Ñìåøíîé Àëôàâèò").Cells(6, Edn)).Name = "Äèàïîçîí"
 
End Sub
 
Function Diap(N, X, Y As Integer)
 
Diap = Range("Y:X").Select
 
 
End Function
 
Private Sub Class_Terminate()
 
End Sub

Вообщем, это пока учебный набросок, без комментариев и т.д.
0
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
10.02.2012, 18:49 7
посмотри книгу
Вложения
Тип файла: xls Книга3.xls (50.0 Кб, 18 просмотров)
1
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 19:17  [ТС] 8
ошибка, type mismatch, у Вас на машине работает?
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.02.2012, 20:15 9
Да в 2003 все нормально, а в 2007 непонятно почему Code 13 type mismatch на строке:
Visual Basic
1
Columns("A:XX").Delete
попробуйте поменять ее на:
Visual Basic
1
Cells.Clear
2
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
10.02.2012, 20:19 10
замени процедуры
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub sssss()
    Columns("A:CC").Delete '<=================== эту строчку поменял, в 2003 XL нет столько столбцов
    
    Dim s As String: s = "АБВГВГБАВАБ"
    DrawWord s, Cells(1, 1)
End Sub
 
Sub DrawWord(s As String, rng As Range)
    Dim i As Integer
    On Error Resume Next
    For i = 1 To Len(s)
        DrawLetter GetArrLett(Mid(s, i, 1)), _
                   rng.Offset(, 6 * (i - 1))
        DoEvents                '<=================== эту строчку добавил, чтоб не зависало
    Next i
End Sub
1
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 21:03  [ТС] 11
Блин, у меня опять -

Compile error, can't find project or library

Нужно же было две строчки поменять, да?

Добавлено через 42 секунды
синим цветом выделяет mid()
0
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
10.02.2012, 21:17 12
tools - referencies - там все missing'и долой (аутлук наверно прицепился)
1
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.02.2012, 21:24 13
Цитата Сообщение от Don Vito Посмотреть сообщение
синим цветом выделяет mid()
Что и у Вас тоже? - а то я думал криво поставил паралельно 2003 + 2007.

Решил так:
1) ALT+F11, сделал действие аналитика.
2) В том же окне - Browse, "c:\Program Files (x86)\Microsoft Office\Office12\", выбрать файл msoutl.olb. Библиотека появится у Вас в списке. Поставьте на нее галочку.
Только после этого прекратилось.
2
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
10.02.2012, 21:55 14
Цитата Сообщение от Diskretor Посмотреть сообщение
2) В том же окне - Browse, "c:\Program Files (x86)\Microsoft Office\Office12\", выбрать файл msoutl.olb. Библиотека появится у Вас в списке. Поставьте на нее галочку.
эта библиотека там на ... не нужна
Цитата Сообщение от Diskretor Посмотреть сообщение
Только после этого прекратилось.
закрутилось ты имел, наверное, ввиду
1
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 22:22  [ТС] 15
ну вот...

всякий интерес пропал делать это дальше(((

в чем фишка, не могу понять, что именно рисует-то?
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.02.2012, 22:48 16
Цитата Сообщение от аналитика Посмотреть сообщение
закрутилось ты имел, наверное, ввиду
Нет. Прекратило выдавать ошибку. А то я думал что Excel VBA уже свои родные команды (mid) не понимает О_о - библиотеку ему ишь подавай.

Цитата Сообщение от аналитика Посмотреть сообщение
эта библиотека там на ... не нужна
Да я то понял.
Но когда я снял галку с Missing библиотеки, сохранял, закрывал/открывал документ, то пока не ткнул носом Excel в тот файл msoutl.olb, оно так мне и продолжало писать - "Не выполню MID пока не дашь библиотеку!"
1
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
10.02.2012, 22:50 17
Цитата Сообщение от Don Vito Посмотреть сообщение
в чем фишка, не могу понять, что именно рисует-то?
здрасти, приехали...

там есть скрытый лист с "трафаретами" букв - именованные области ("А_", "Б_",..)
чтобы "нарисовать" букву процедуре нужна ячейка (верхняя левая ячейка "рисунка") и "карта" буквы (2-мерный массив "да/нет" - "черное/белое"), которую она и считывает со скрытого листа (можно перебить в массив "1/0") ...
2
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
10.02.2012, 23:08  [ТС] 18
Цитата Сообщение от аналитика Посмотреть сообщение
здрасти, приехали...

там есть скрытый лист с "трафаретами" букв - именованные области ("А_", "Б_",..)
чтобы "нарисовать" букву процедуре нужна ячейка (верхняя левая ячейка "рисунка") и "карта" буквы (2-мерный массив "да/нет" - "черное/белое"), которую она и считывает со скрытого листа (можно перебить в массив "1/0") ...
это реально круто...

нет, правда, супперр!))
1
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
11.02.2012, 03:19 19
Цитата Сообщение от Don Vito Посмотреть сообщение
всякий интерес пропал делать это дальше(((
Ну почему же. Всегда есть куда стремиться:

1) Вернуться к Вашей первоначальной задумке:
нажимаешь клавишу, а он печатает большую.
2) Убрать эффект печатной машинки, это будет очень сложно (морально).
3) Добавить весь алфавит.
4) Убрать именованные диапазоны, оптимизировав код так:
Visual Basic
1
2
3
4
5
Function GetArrLett(s As String)
Dim POS As Range
...
Set POS = Sheets(1).Cells(8, 2 + (Asc(s) - 192) * 6)
arr(r, c) = (Range(POS, POS.Offset(-6, 4)).Cells(r, c).Interior.Color = vbBlack)
Теперь просто рисуем трафареты дальше.

Цитата Сообщение от Don Vito Посмотреть сообщение
в чем фишка, не могу понять, что именно рисует-то?
Я тоже не найдя команды Sheets, подумал, что волшебство

Не по теме:

Первое пришло в голову, что читает из файлов Windows\Fonts
Потом, долго думал, что за формат такой записи диапазона "S_" O_o

2
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 174
11.02.2012, 18:38  [ТС] 20
Я тоже подуал, что может быть есть функция (в какой нибудь библиотеке XL ), которая в себе содержит какой-то графический код алфавита... Идея с трафаретами - это, признаться фокус, а без разгадки - магия)))

Я буду пытаться реализовать свою идею, т.е. в каждой функции буквы, будет зашито графическая реализация, а потом сделаю, то ччто Вы сказали...

Добавлено через 4 часа 33 минуты
В продолжение темы, а где можно посмотреть свойства объектов XL и их функции?

Может, где-то есть иерархия объектов?
1
11.02.2012, 18:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2012, 18:38
Помогаю со студенческими работами здесь

Вывести max из сумм трех подряд идущих чисел
Дана последовательность из N натуральных чисел, не превышающих MaxLongInt (2^32-1). Вывести...

Как сделать, чтобы строка не состояла из идущих подряд символов (1234)
Здравствуйте! Подскажите, пожалуйста, как в vba проверить строку на наличие последовательности...

Вычислить наибольшую сумму трёх подряд идущих элементов массива
Напишите программу с использованием подпрограммы для вычисления наибольшей суммы трёх подряд идущих...

Проверить наличие в массиве трех подряд идущих одинаковых элемента
29. Если в одномерном массиве имеются три подряд идущих одинаковых элемента, то переменной r...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru