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

Как сделать так , чтобы переменная на русском языке не выводило ошибку

27.06.2016, 10:35. Показов 2520. Ответов 65
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
А как сделать так , чтобы при назначении переменной на русском языке (что необходимо для отображения в ComboBox) не выдавала ошибку? Или я что то не так сделал?

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
Option Explicit
 
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Dim acadCircle As acadCircle 'Пикет 20 см в диаметре
Dim acadLayerPiket As AcadLayer
Dim acadLayerNum As AcadLayer
Dim acadText As acadText
Dim ValuesRange As Variant
Dim Piket_counter As Integer
Dim Flag As Boolean
Dim Белый As acWhite
Dim Красный As acRed
Dim Жолтый As acYellow
Dim Зеленый As acGreen
Dim Синий As acBlue
Dim Голубой As acCyan
Dim Фиолетовый As acPurple
 
 
Private Sub UserForm_Initialize()
 
ComboBox1.AddItem "Белый"
ComboBox1.AddItem "Красный"
ComboBox1.AddItem "Жолтый"
ComboBox1.AddItem "Зеленый"
ComboBox1.AddItem "Белый"
ComboBox1.AddItem "Синий"
ComboBox1.AddItem "Голубой"
ComboBox1.AddItem "Фиолетовый"
 
AutoCAD_Connection
 
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2016, 10:35
Ответы с готовыми решениями:

Необходимо немного исправить код(сделать так чтобы не выводило лишние 0), и выводило поле слева от номера бита
#include <stdio.h> unsigned setbit(unsigned x, int p, int n); void printfbit(unsigned n); ...

как сделать так, чтобы вместо #ошибки выводило 0(ноль)?
Таблица1: 1)Klient - Клиент 2)ves_kond - кондициооный вес 3)ves_nett - вес нетто...

Как сделать так, чтобы выводило нормальный текст, а не ASCII символы
Задание: Написать программу с использованием Функции 8h INT 21h, для считывания функциональной...

как сделать, чтобы на (new DateTime) месяц выводился на русском языке?
Добрый день, ребята подскажите как сделать чтобы на (new DateTime) месяц выводился на русском...

65
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 14:20 21
Author24 — интернет-сервис помощи студентам
Насколько я понимаю в лезете в autocad из под excel
т.е. код находится в Excel а управляете autocad-ом
если не применено раннее связывание то возникнут проблемы с константами (я про вот эти которые начинаются с ac....acRed-например)
ранее связывание это когда в редакторе VBA Tools-References выбирается библиотека той программы с которой будете работать - выбрали библиотеку то константы станут доступны - не выбрали(позднее связывание) то будьте добры вместо имени константы прописать ее числовой эквивалент

теперь про комбики Excel
есть возможность показать несколько столбцов
есть возможность показать один столбец и при выборе строки будет выдано значение находящееся в другом столбце но в этой же строке

и так создаем данные в 3 столбцах

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
ComboBox1.AddItem "Украина"
ComboBox1.List(0, 1) = "Киев"
ComboBox1.List(0, 2) ="Украинский"
 
ComboBox1.AddItem "Россия"
ComboBox1.List(1, 1) = "Москва"
ComboBox1.List(1, 2) ="Русский"
 
ComboBox1.AddItem "Белоруссия"
ComboBox1.List(2, 1) = "Минск"
ComboBox1.List(2, 2) ="Белорусский"
что тут важно понять
у комбобокса есть так называемые индексы - т.е. каждой строке присваивается номер
индексы начинаются с 0
в свойстве list необходимо написать индекс и номер столбца (то же с 0)

когда вы выделяете комбик и переходите к коду
в редакторе vba слева внизу есть панель - свойства объекта

в этом окне вас интересует 2 строчки
BoundColumn и ColumnCount
BoundColumn - показывает из какого столбца брать значения (отсчет идет от 1)
ColumnCount - показывает сколько столбцов отображать в кобобоксе (отсчет тоже от 1)

для нашего случая
если BoundColumn - 2 ColumnCount-1
то комбик выдаст список
Украина
Россия
Белорусия

при выборе значения в комбике - значение комбика будетвыбираться из списка
Киев
Москва
Минск

т.е. видим одно а получаем другое
если BoundColumn - 3 ColumnCount-1
то выбор будет происходить из списка
Украинский
Русский
Белорусский

При установке ColumnCount-2
Выпадающий список будет иметь вид
Украина Киев
Россия Москва
Белоруссия Минск
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.06.2016, 15:09 22
Т.е. можно в комбо сразу забить эти пары значений - название цвета и значение константы, далее при выборе цвета используем его значение.
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 15:10 23
ага - так и есть
0
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 16:16 24
Как сделать так , чтобы переменная на русском языке не выводило ошибку
А как быть с Албанским ?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
    Dim ©, ®, §
    © = 33
    ® = 44
    'обменяемся
    § = ©
    © = ®
    ® = §
    MsgBox CStr(©) & ", " & CStr(®)
    'сложимся
    § = © + ®
    MsgBox §
Я иногда грешУ, такими ироглифами чтобы было трудно скопипастить )
Изображения
 
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.06.2016, 16:19 25
А cstr() зачем?
0
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 16:30 26
Цитата Сообщение от Hugo121 Посмотреть сообщение
А cstr() зачем?
Так... запамятовал что это же вариант )) MsgBox © & ", " & ®

Добавлено через 6 минут
Не советую этим пользоваться тем, кто второй день прогает.. вам за такое сначало
двойку поставят а потом изобьют после уроков ... надо понимать.. почему так можно ))
0
0 / 0 / 0
Регистрация: 25.06.2016
Сообщений: 41
27.06.2016, 16:41  [ТС] 27
Кто подскажет почему выдает ошибку , когда задаю макросу запомнить выбранный цвет с ComboBox ?????? Опять наверное не тот метод выбрал ???
Миниатюры
Как сделать так , чтобы  переменная на русском языке не выводило ошибку  
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 16:48 28
Свойство Color требует число а вы вводите текст
0
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 16:48 29
Это ущерб языка VBA хоть они и схожи с VB6
в VB6 можно писать так, например к позиции добавить дополнительное значение:
Visual Basic
1
    Combo1.ItemData = 999 'Например цвет
..но в VBA такого нет .. (( пользуйся связанной коллекцией или словарём
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.06.2016, 16:50 30
Да и амперсанд лишний - потому строка красная.

Добавлено через 57 секунд
Цитата Сообщение от fever brain Посмотреть сообщение
пользуйся связанной коллекцией или словарём
я предлагал, но ведь можно сразу всё забить в комбо - и выше рассказано как.
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 16:50 31
Уточню - последний амперсанд
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.06.2016, 16:53 32
А это было домашнее задание
0
0 / 0 / 0
Регистрация: 25.06.2016
Сообщений: 41
27.06.2016, 16:54  [ТС] 33
Верю просто учусь по видио с ютюба или по найденным примерам , не судите строго , просто я 3 день с VBA работаю)))))!!
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 16:55 34
а домашнее задание будет такое
Что такое амперсанд?
0
0 / 0 / 0
Регистрация: 25.06.2016
Сообщений: 41
27.06.2016, 16:59  [ТС] 35
Можно забить как числовое значение так и словесное (словесное на английском) , Кад понимает и так и так , если писать
acadLayerPiket.Color = acWhite , макрос ошибки не видит и все работает корректно но мне нужно в место "acWhite" подставить значение выбранное с ComboBox, что я и пытаюсь сделать , точнее понять как правильно это делать !))))
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 17:02 36
вот вы и добрались до этого момента к которому вас упорно все вели

Добавлено через 1 минуту
acWhite - это имя внутренней константы Када и это имя имеет числовое значение
0
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 17:02 37
Амперсанд
Миниатюры
Как сделать так , чтобы  переменная на русском языке не выводило ошибку  
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
27.06.2016, 17:03 38
а по сему вам нужно в вашем комбобоксе видеть одно а комбик должен выдавать именно число
0
0 / 0 / 0
Регистрация: 25.06.2016
Сообщений: 41
27.06.2016, 17:04  [ТС] 39
А разве я не задал константы , вроде бы да !!!


'Экспорт пикетов в AutoCAD
'Ввод: выделенный массив [Num,Y,X] - ячейки
'Вывод: пикет - круг d=10 см, номер - TEXT Height=50 см
'AutoCAD должен быть запущен.
'Экспорт осуществляется в новый документ


Option Explicit

Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Dim acadCircle As acadCircle 'Пикет 20 см в диаметре
Dim acadLayerPiket As AcadLayer
Dim acadLayerNum As AcadLayer
Dim acadText As acadText
Dim ValuesRange As Variant
Dim Piket_counter As Integer
Dim Flag As Boolean
Const Белый = acWhite
Const Красный = acRed
Const Желтый = acYellow
Const Зеленый = acGreen
Const Синий = acBlue
Const Голубой = acCyan
Const Фиолетовый = 6

Private Sub ComboBox1_Change()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub UserForm_Initialize()
ComboBox1.AddItem "Белый"
ComboBox1.AddItem "Красный"
ComboBox1.AddItem "Желтый"
ComboBox1.AddItem "Зеленый"
ComboBox1.AddItem "Белый"
ComboBox1.AddItem "Синий"
ComboBox1.AddItem "Голубой"
ComboBox1.AddItem "Фиолетовый"
ComboBox2.AddItem "Белый"
ComboBox2.AddItem "Красный"
ComboBox2.AddItem "Желтый"
ComboBox2.AddItem "Зеленый"
ComboBox2.AddItem "Белый"
ComboBox2.AddItem "Синий"
ComboBox2.AddItem "Голубой"
ComboBox1.AddItem "Фиолетовый"
ComboBox1.Value = ComboBox1.List(0)
ComboBox2.Value = ComboBox2.List(6)
AutoCAD_Connection
End Sub
Private Sub ButtonExit_Click()
Unload Me
End Sub

Private Sub CommandButton1_Click()
CommandButton1.ControlTipText = (" Name,X,Y,Z=0 ")
If Flag = False Then Exit Sub
Get_XL_Values
If Flag = False Then Exit Sub
XL2DWG_RUN
CommandButton1.Enabled = False
ListBox1.AddItem ("Интеграция координат в AutoCAD завершина")
End Sub
Private Sub CommandButton2_Click()

CommandButton2.ControlTipText = (" Name,X,Y,Z ")
If Flag = False Then Exit Sub
Get_XL_Values
If Flag = False Then Exit Sub
XL3DWG_RUN
CommandButton2.Enabled = False
ListBox1.AddItem ("Интеграция координат в AutoCAD завершина")
End Sub

Private Sub AutoCAD_Connection()
Dim i As Integer
Flag = True
'Сначало подключаемся к ядру (Автокаду)
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
MsgBox "Не могу обнаружить загруженный AutoCAD"
Err.Clear
Flag = False
Else
ListBox1.AddItem ("AutoCAD Connect -- Ok")
End If
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
acadApp.Visible = False
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
End Sub

Private Sub Get_XL_Values()
Dim Num As Variant
'MsgBox ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)
ValuesRange = Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1))
Piket_counter = Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)).Count / 3
'MsgBox Piket_counter
'MsgBox Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)).Count

End Sub
Private Sub Get_XL_Values1()
Dim Num As Variant
'MsgBox ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)
ValuesRange = Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1))
Piket_counter = Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)).Count / 4
'MsgBox Piket_counter
'MsgBox Range(ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlA1)).Count

End Sub

Private Sub AutoCAD_Init()
Set acadDoc = acadApp.ActiveDocument

Set acadLayerPiket = acadDoc.Layers.Add("Тточки")
If acadLayerPiket.Freeze = True Then acadLayerPiket.Freeze = False
acadLayerPiket.Color = acWhite

Set acadLayerNum = acadDoc.Layers.Add("Точки текст")
If acadLayerNum.Freeze = True Then acadLayerNum.Freeze = False
acadLayerNum.Color = ComboBox2.Value & " "

End Sub
0
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 17:06 40
Цитата Сообщение от Геннадий Андрее Посмотреть сообщение
'Ýêñïîðò ïèêåòîâ â AutoCAD
похоже вы и с видюхой тоже на Вы ))
0
27.06.2016, 17:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2016, 17:06
Помогаю со студенческими работами здесь

как сделать так чтобы при активном checkbox на базу данных выводило цифры через sql запрос
например при активном checkbox1 выводит на БД Access цифру 1. программу надо сделать и связать с...

как сделать так, что бы когда запускается .exe файл все надписи оставались на русском языке
как сделать так, что бы когда запускается .exe файл все надписи оставались на русском языке, а то...

Сделать так, чтобы выводило результат с десятичной частью
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4:...

Как в MonoGame сделать чтобы текст выводился в игре на русском, а то выбивает ошибку!
Как в MonoGame сделать чтобы текст выводился в игре на русском, ато выбивает ошибку! на английском...


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

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