電球を取り換えるだけで家族を見守る

VBA初心者ですが宜しくお願いします。
質問ですが、任意のセルにunicodeにしかない文字(?)を、VBAにて変数に入力した際に、"?"になってしまいます。

例:セルA1に"㎥"(立方メートル)が入った文字列、"固体Bの体積は1㎥です。"と入力

 【VBA】

  dim Ac as string

  Ac=cells(1,1).value


上記の場合、変数Acの結果が"固体Bの体積は1?です。"となります。

"?"にならないようにするにはどうしたらいいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは。



>  dim Ac as string
>
>  Ac=cells(1,1).value

それは、その表示する媒体の問題で、きちんとUnicode では受け取っています。

あえて、VBA上で、変数 Ac を表示するためには、例えば、UserForm のTextBox や Label を使うなりしなければなりません。

例:
UserForm 上のテキストボックスと、ラベルに表示した。

Private Sub CommandButton1_Click()
Dim Ac As String
  Ac = Cells(1, 1).Value
  TextBox1.Text = Ac
  Label1.Caption = Ac
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいた方法で表示はできました。

お礼日時:2007/07/25 10:22

エクセルVBAの世界の話ではなくなって、無理でしょう。


ーー
エクセルで話題にできそうな件を1つ
Sub test01()
Range("b4") = "123m3"
Range("B4").Characters(Start:=5, Length:=1).Font.Superscript = True
End Sub
を実行してみてください。
質問の主旨とは違うので関連というところです。
文字列だし、何もしないと左詰ですし、計算には使えません。
ただ右詰めには設定できます
平方メートルは文字コードがあるようです。書式でユーザー定義
#,###"m2"
書式の設定もユーザー定義を使うとしても、立方メートルは文字が打ち込めないので上手くいかないでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2007/07/25 10:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelVBA テキストファイルUNICODE文字化けについて

1.環境
Microsoft Windows7 64ビット
Microsoft Ofiice2013 Excel2013 32ビット

2.事象
テキストファイルに定義しているUNICODEを読むと文字化け(?)します。
メモ帳等のテキストファイル上はUNICODEを文字化けせずに目視で確認しています。
どうしたら文字化けせずに読めるのでしょうか?
どなたか詳しい方、ご教授願います。

3.テキストファイル(test.dat)


4.VBA
・参照設定([ツール(T)]バー-[参照設定(R)…])
レ Microsoft ActiveX Data Objects 2.8 Library

・ソース
※例どっちでも、文字化けします。
Dim a, b As String
例1)
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Type = adTypeText
.Open
.LoadFromFile "C:\test.dat"
a = .ReadText
.Close
End With

例2)
Open "C:\test.dat" For Input As #1
Do Until EOF(1)
Line Input #1, b
Loop
Close #1

1.環境
Microsoft Windows7 64ビット
Microsoft Ofiice2013 Excel2013 32ビット

2.事象
テキストファイルに定義しているUNICODEを読むと文字化け(?)します。
メモ帳等のテキストファイル上はUNICODEを文字化けせずに目視で確認しています。
どうしたら文字化けせずに読めるのでしょうか?
どなたか詳しい方、ご教授願います。

3.テキストファイル(test.dat)


4.VBA
・参照設定([ツール(T)]バー-[参照設定(R)…])
レ Microsoft ActiveX Data Objects 2.8 Library

・ソース
※例どっちでも、...続きを読む

Aベストアンサー

できないときは、何か肝心なミスを見逃していることがあります。

>セル自体にUnicodeを対応していると思っています。
Excel 2003の頃から、対応はしているのですが、本格的な対応は、
Excel 2013 前後だと思います。新しい文字関数が増えましたからね。

>入力テキストファイルから出力テキストファイル
これは、ADODB.Stream で対応可能なはずです。

しかし、私の経験では、逆に、セルからの出力テキストの場合は、まったくやり方が違う方法を思いつきました。いずれにしても、私の範囲内では、UTF-8とUTF-16 は、共有しませんから、要注意だと思います。思わぬ失敗をしている時があります。

学ばれるのでしたから、以下のサイトがよいです。
NonSoft というサイトです。
http://nonsoft.la.coocan.jp/SoftSample/SampleModADOS.html

私も、それなりに、この問題をそのサイトを中心に格闘した上でのことですが、ただ、こういう話は、どちらかというと、VB6系よりも次の世代の言語のプログラムに任せたほうが早いのです。さしずめ、PowerShellあたりでも対応可能なのですから、本当に、ばかばかしいと思うぐらいに簡単になってしまいました。

それと、ご存知かもしれませんが、有名なUnix系ツールのnkf32 あたりが、巨大ファイルの変換が思うに任せないようです。私の間違いかもしれませんが。それで、試しに、Notepad++ で、あっけなく変換してしまったので、本当に拍子抜けしてしまいました。

できないときは、何か肝心なミスを見逃していることがあります。

>セル自体にUnicodeを対応していると思っています。
Excel 2003の頃から、対応はしているのですが、本格的な対応は、
Excel 2013 前後だと思います。新しい文字関数が増えましたからね。

>入力テキストファイルから出力テキストファイル
これは、ADODB.Stream で対応可能なはずです。

しかし、私の経験では、逆に、セルからの出力テキストの場合は、まったくやり方が違う方法を思いつきました。いずれにしても、私の範囲内では、UTF-8とUTF-16 ...続きを読む

QUNICODE文字が含まれているかのチェック

お世話になります。

VBAを使用して、
セルに、UNICODEE文字が含まれているかのチェックをしたいと考えております。
・できれば、どの文字がUNICODE文字かどうか知りたい。
・最低でもどのセルにUNICODE文字が含まれているか知りたい
という形ですが、もし、ご存知の方教えて頂けないでしょうか?


宜しくお願い致します。

Aベストアンサー

#2の回答者です。
>最低でもどのセルにUNICODE文字が含まれているか知りたい
ということで、#2のユーザー定義関数を利用した、シート全体を探すマクロを加えておきます。どちらも、標準モジュールを使います。

'//
Sub Macro_8996251()
Dim Rng As Range
Dim c As Variant
On Error Resume Next
Set Rng = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23)
If Err() <> 0 Then Exit Sub
On Error GoTo 0
For Each c In Rng.Cells
 If CheckUNICODE(c.Value) = 1 Then
   c.Interior.ColorIndex = 3
 End If
Next c
End Sub
'///

QStrConvでUnicodeに変換出来ない文字

エクセルのVBAで、StrConv関数を使用して、文字列をUnicodeに変換しようとしているのですが、特定の文字が変換できません。
解決方法をご存知の方は教えてください。

現象:StrConv("マミムメモ",vbUnicode)で変換すると、ムメモが文字化けしてしまう。

確認方法:
MsgBox StrConv(StrConv(InputBox("入力"), vbUnicode), vbFromUnicode)
で、InputBoxに"マミムメモ"を入力すると、メッセージボックスに"マミ???"と表示されてしまう。

Aベストアンサー

> Outlookで使用しているレジストリに格納して、Outlookでその文字列を
> 使用したいのですが....

最初に言ってもらわないと...^^;

VB(A) の SetSetting/GetSetting ステートメントではアクセスできる場所
に制限がありますので、Outlook のレジストリにアクセスしているとなると
API を使ってますね?

恐らく API の使い方にミスがありそうです。

ヒント:API の宣言部に間違いはありませんか?
ヒント:API に文字列を渡す場合、ByVal キーワードを使って渡します。
ヒント:RegSetValue API の引数 cbData は、Unicode --> Shift-JIS に
    変換したバイト長+1、つまり最後がNullで終わるように渡さないと、
    NT 系 OS では正しく書き込めません。

    Ex) CLng(LenB(StrConv("文字列", vbFromUnicode)) + 1

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q中国文字のプログラムでの取り扱い

中国文字のVisual Basic6での取り扱いについて教えてください。
環境 Windows7、Visual Basic6、IE8
秀丸エディタなどでUTF-8モードとして、「书信」などの漢字(左の字が中国簡体字、右の信は日本文字と同じ)をファイルに入れておき、これを読み取って、HTML文で表示できるようにするプログラムを作ろうとしています。
Visual Basic6の変数に入れるとUnicodeとして処理されるので実行中に止めて表示させても、またHTML文書で表示させても”???”と文字化け状態になります。
そこでOKwebにてコード変換を教えていただいたのでUnicodeをUTF-8に変換すると「?信」となります。
何か変ですがこれをさらにUTF-8からUniCodeに変換すると”???”と表示されるようになります。
中国簡体字の部分だけがどうしても表示できません。どうしたら表示できるのでしょうか?

なお本件とは直接の関係はありませんが、HTMLソースを秀丸で表示させて「书信」を張り付けると、ソースでも、またブラウザ・IE8で表示させても正しく「书信」と表示されます。

中国文字のVisual Basic6での取り扱いについて教えてください。
環境 Windows7、Visual Basic6、IE8
秀丸エディタなどでUTF-8モードとして、「书信」などの漢字(左の字が中国簡体字、右の信は日本文字と同じ)をファイルに入れておき、これを読み取って、HTML文で表示できるようにするプログラムを作ろうとしています。
Visual Basic6の変数に入れるとUnicodeとして処理されるので実行中に止めて表示させても、またHTML文書で表示させても”???”と文字化け状態になります。
そこでOKwebにてコード...続きを読む

Aベストアンサー

VB6の標準コントロールに日本語や中国語の混在文を
表示することはできないので、UNICODEに対応した
コントロールに表示するようにします。

二つのコントロールに同時に表示してみます。

準備:
プロジェクトからコンポーネントを選択し、
Microsoft Internet Controls
msrtedit 1.0 Type Library
の二つにチェックを入れて適用、OKとします。

フォームにコマンドボタンを一つ、
WebBrowserコントロールとAMSREditを
フォームに設定します。

以下のコードを設定してください。
なお、test.txtはプロジェクトと同じディレクトリ
においているとしています。他のディレクトリに
おいている場合はフルパスを設定してください。

Private Sub Command1_Click()

'RichEditに表示
With New ADODB.Stream
.Type = 2
.Charset = "UNICODE"
.Open
.LoadFromFile (App.Path & "\test.txt")
AMSREdit1.text = .ReadText(-1)
End With
'WebBrowserに表示
WebBrowser1.Navigate App.Path & "\test.txt"
End Sub

VB6の標準コントロールに日本語や中国語の混在文を
表示することはできないので、UNICODEに対応した
コントロールに表示するようにします。

二つのコントロールに同時に表示してみます。

準備:
プロジェクトからコンポーネントを選択し、
Microsoft Internet Controls
msrtedit 1.0 Type Library
の二つにチェックを入れて適用、OKとします。

フォームにコマンドボタンを一つ、
WebBrowserコントロールとAMSREditを
フォームに設定します。

以下のコードを設定してください。
なお、test.txtはプロジェクト...続きを読む

QEXCEL(VBA) セルをクリックしたときの処理

何度もお世話になります。

A5:A20のどれかをクリックしたときに
クリックしたセルが値が入力済みか確認してから
ファイルを名前を付けて保存したいのですが
クリックしたという情報(イベント?)の取得方法が
わかりません。

(1)どのようにチェックすればよいのでしょうか?
(2)また、皆さんはどのようにしてこのような問題を解決してるのでしょうか?

よろしくお願いします。

Aベストアンサー

Sheet1だとして、
Sheet1のマクロで

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Target.Column = 1 And Target.Row >= 5 And Target.Row <= 20 Then
If Target.Value <> "" Then MsgBox "入力済み"
End If
'
End Sub

と入れると、クリックしたセルがA5からA20のどれかで
かつセルに値が入っているときのみ”入力済み”とメッセージが表示されます。
このメッセージ表示の部分を、「名前を付けて保存」の処理に置き換えてはいかがでしょうか。

QEXCEL VBAで全選択範囲の解除

EXCEL VBAで
Cells.Select
と書くと、全セルが選択状態になりますが、
これを解除するには、どう書けばよいのでしょうか?

Aベストアンサー

その1
A1 など、適当なセルを選択する。
(回答#1と同じ)

その2
全選択する前の選択範囲に戻る。

全選択前に
変数 = Selection.Address で記憶

全選択後
Range(変数).Select で元の選択範囲を選択

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub


人気Q&Aランキング

おすすめ情報