VBAでvlookup関数を下のように組みましたが、(1)でエラーが出ます。VBAに詳しい方、教えてください。
Sub VLLOKUPによる表の検索4()
Dim mykensakuchi
Dim mykensakuhan
Dim gyo As Integer
(1) mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
mykensakuhan = Worksheets("sheet2").Range("b2:e9")
saikagyo = Worksheets("sheet1").Range("a" & Rows.Count).End(xlUp).Row
gyo = 2
For gyo = saikagyo To 1 Step -1
With Application.WorksheetFunction
Range("b:gyo").Value = .VLookup(mykensakuchi, mykensakuhan, 2, False)
End With
Next
End Sub

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

A 回答 (2件)

こんばんは。



現在書いたコードの難易度としては、中の上から、上級です。入門レベルではVLookupのエラーを、'On Error トラップ'を捉えるのは、無理です。テキストにも以下のような使い方は出ていないはずです。

できれば、Findメソッドなどを使ったほうが分かりやすいです。(ヘルプに参考コードが出ています)

それに、コードが間違いやすい書き方です。変数は、もう少し、分かりやすく書いたほうがよいです。今回はそのままにしましたが、3語程度までにしてほうがよいです。また、Sub プロシージャ名は、特に理由はありませんが、英語かローマ字を使ってください。データ型は、難しければ、つけなくてもよいです。また、ワークシートの関数は、一般的には、Variant にしてください。

myKensakuChi こういう書き方を、キャメル型といって、入力を間違えないようにするためです。(というか、そのまま使うためには、キャメル型にせざるを得ませんでした。)

'----------------------------------------------------

Sub Search_by_VLOOKUP_4()
  Dim myKensakuChi As Variant
  Dim myKensakuHan As Range
  Dim gyo As Long
  Dim saikaGyo  As Long
  Dim ret As Variant
  gyo = 2
  saikaGyo = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
  Set myKensakuHan = Worksheets("Sheet2").Range("B2:E9")
  
  On Error Resume Next
  '今回は、下からする必要はあまりないはずです。
  For gyo = saikaGyo To 1 Step -1
    ret = ""
    myKensakuChi = Worksheets("Sheet1").Range("A" & gyo).Value
    ret = WorksheetFunction.VLookup(myKensakuChi, myKensakuHan, 2, False)
    If ret <> "" Then
      Worksheets("Sheet1").Range("B" & gyo).Value = ret
    End If
  Next
  On Error GoTo 0
End Sub
    • good
    • 0
この回答へのお礼

Wendy02 さん
ご丁寧にコードまで記述していただき、ありがとうございました。
いただいたコードを実行したら思っているとおりに動きました。
また、コード記述の注意点等についてもご指導いただきありがとうございます。
まだまだ初心者ですが、これから勉強していきます。
ありがとうございました。

お礼日時:2009/05/24 21:20

デバックモードで


(1) mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
が黄色くなっていると思いますが
gyoのところにマウスを移動すると何が入っているでしょうか?
Range("b:gyo").Valueのところもおかしいと思います。
Range("b:" & gyo).Value

この回答への補足

さっそく回答いただきありがとうございました。指摘いただいた部分をなおし、以下のようなコードにしたらエラーは出なくなり、キーがマッチする場合は正しい結果が返ってくるようになりました。しかし、キーがマッチしない場合は、そこで処理がとまってしまい、(2)の箇所でエラーが出ます。VLOOKUP関数を使う上で、何かコードの記述がもれているのでしょうか?

Sub VLLOKUPによる表の検索4()
Dim mykensakuchi
Dim mykensakuhan
Dim gyo As Integer
gyo = 2
mykensakuhan = Worksheets("sheet2").Range("b2:e9")
saikagyo = Worksheets("sheet1").Range("a" & Rows.Count).End(xlUp).Row

For gyo = 2 To saikagyo Step 1
mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
With Application.WorksheetFunction
(2) Range("b" & gyo).Value = .VLookup(mykensakuchi, mykensakuhan, 2, False)
End With
Next
End Sub

補足日時:2009/05/24 20:21
    • good
    • 0

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

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

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

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

Q音読みと訓読みどちらが好きか

音読みと訓読みどちらが好きですか?私は訓読みです。

Aベストアンサー

訓読みかな?
やわらかさがあるし、大和言葉になると時代がかっていて、あ~、日本は歴史のある国なんだな~と浪漫がある。

 「天皇」すめらみこと
 「大臣」おとど
 「風 
 風 風」 かぜがおこるさま
 「牛罷」あしのみじかいうし
       ・・・・・・・・・・(笑)
(3つ目と4つ目は、「 」内を一つの漢字としてみてください)

関係ないけど、「日本」は「にっぽん」ではなく「にほん」派です。

Qマクロ Value=Valueで複写できない

いつも回答して頂きありがとうございます。
たぶん基本的な質問だと思うのですが、どうしたら上手くいくのか分かりません。御指導の程よろしくお願いします。以下の記述でエラーがかかります。

『コンパイルエラー:SubまたはFunctionが定義されていません』
Worksheets("一覧").Cells(d, 5).Value = Wokrsheets("編集用一覧").Cells(e, 5).Value

記述全体
Sub TEST()
Dim d As Integer
Dim e As Integer
Worksheets("一覧").Activate
d = 3
e = 6
Do While Worksheets("一覧").Cells(d, 2).Value <> ""
Worksheets("一覧").Cells(d, 5).Value = Wokrsheets("編集用一覧").Cells(e, 5).Value
d = d + 1
e = e + 4
Loop
End Sub

いつも回答して頂きありがとうございます。
たぶん基本的な質問だと思うのですが、どうしたら上手くいくのか分かりません。御指導の程よろしくお願いします。以下の記述でエラーがかかります。

『コンパイルエラー:SubまたはFunctionが定義されていません』
Worksheets("一覧").Cells(d, 5).Value = Wokrsheets("編集用一覧").Cells(e, 5).Value

記述全体
Sub TEST()
Dim d As Integer
Dim e As Integer
Worksheets("一覧").Activate
d = 3
e = 6
Do While Worksheets("一覧").Cell...続きを読む

Aベストアンサー

直接打ち込むスタイルを堅持するためには字数減らすことが大事では??

Sub TEST()
Dim d As Long
Dim e As Long
d = 3
e = 6
Sheets("一覧").Activate
With Sheets("編集用一覧")
Do While Cells(d, 2).Value <> ""
Cells(d, 5).Value = .Cells(e, 5).Value
d = d + 1
e = e + 4
Loop
End With
End Sub

Qあなたの名前は、音読み?訓読み?それとも重箱読み?

あなたのお名前は、音読みですか、訓読みですか、或いは重箱読みですか?

私(男性)は漢字一文字の名前で、音読みです。
因みに訓読みにすると、女性風になります。

Aベストアンサー

50代のオバちゃんです。

音読みと一つしか読みが無い漢字の二文字です。

初めて会った人にちゃんと読まれた事一度も無いです。

最近は少し聞く名前になってきました。

しかし同じ漢字の人には会った事ないです。

初めの漢字一文字は男性の名前にたまに見かけます。

なのでよく男性に間違われてダイレクトメールがきたりします。

QVBAで Set wb = Sheets(1).Copyができないわけ?

つい先ほどの質問 4150169 は掲示したコードが抜けておりましたので無視して、こちらにご回答ください。
ほんと抜けた話です。すみません。

以下のマクロtest01はエラーになります。

Sub test01()
Dim wb As Workbook
Set wb = Sheets(1).Copy 'エラー「オブジェクトが必要です」
End Sub

もちろん
Dim wb As Workbook
Sheets(1).Copy
Set wb = ActiveWorkbook
と修正すればエラーにならないことは存じていますが、ふと疑問がわきました。
Sheets(1).Copyの段階であたらしいWorkbookが誕生していますよね。
ならば、そのWorkbookはオブジェクトではないのでしょうか?

Workbooks.Add で誕生したWorkbookは
Set wb = Workbooks.Add
と変数wbにSetできるのに
Set wb = Sheets(1).Copy
ができないのが不思議です。

Set wb = ActiveWorkbook
としないでもSheets(1).CopyをwbにSetする書き方はないのでしょうか?

つい先ほどの質問 4150169 は掲示したコードが抜けておりましたので無視して、こちらにご回答ください。
ほんと抜けた話です。すみません。

以下のマクロtest01はエラーになります。

Sub test01()
Dim wb As Workbook
Set wb = Sheets(1).Copy 'エラー「オブジェクトが必要です」
End Sub

もちろん
Dim wb As Workbook
Sheets(1).Copy
Set wb = ActiveWorkbook
と修正すればエラーにならないことは存じていますが、ふと疑問がわきました。
Sheets(1).Copyの段階であたらしいWorkbookが誕生し...続きを読む

Aベストアンサー

こんばんは。

少し、全体的に考えさせてもらいました。ご質問の最終的な終着点がどういうところにあるのかはあまりはっきりしませんし、私が書いたところで、この手の話は、あまり分かってもらえるという自信はありません。merlionXXさん、ご自身のVBAのコーディングの問題であって、個々の問題ではないからでもあります。

今回の質問は、merlionXX さん自身が、解答した中で考えたことでしょうし、まさか、サブルーチンや特殊なコードで解決をしようと思ったわけではないと思います。

実際のコードとして、

 Set wb = Sheets(1).Copy

というのは出来ないのはご存知なわけですが、なぜ「そうしたいと思った」か、ということがポイントではないでしょうか。出来ないのは、VBAの製作者の恣意的な設計だったのか、それとも、他の要因があったのかと思います。それを、私たちユーザーレベルでは分かりません。

あえて理由を言えば、もともと、Copy メソッドには、戻り値にオブジェクトではない、ということです。

実際に、
ret = Sheets(1).Copy

で返るのは、True です。失敗すれば、実行時エラーが起こります。

質問は、前回のコード( http://oshiete1.goo.ne.jp/qa4138541.html ) から、思いついた事だとは思っていますが、Sheets(1).Copy の時点で、Application側の暗黙的な Workbookのインスタンスの生成を与えてしまっているわけで、そこで、ActiveWorkbook で、オブジェクトを取得することに、なにかしら不自然さを感じていたとしたら、その感覚は正しいのではないかと思います。私も同じように思います。

しかし、その方法で、ブックオブジェクトを取得する方法は、ActiveWorkbook をオブジェクトとして取る方法以外には、新たに Copy メソッド自体から手を加えるぐらいしか、実現する方法はないような気がします。そうすると、その親オブジェクトのSheet のClass 設定から、手を入れなくてはなりません。それは、遥か上級の話だろうし、VBAレベルで可能かどうかさえ分かりません。それに、そんなに難しいコードが、この種のもので必要だと思えません。また、一行、二行の問題で、特別なワザもなく、わざわざFunction プロシージャで取り出すというのは、理屈ではあっても、実務的にはまず考えられません。

VBAは、合理的に出来ているようでいて、はっきりとしないものがいくつもあり、「やって見なければ分からない」としかいいようがありません。本当に単純なコードでも、VBに出来て、VBAには出来ないものがあります。自分は、プロだと豪語している人に限って、こういうところでね凡ミスをするのが常です。VBAのコーディングは、よほど初歩的なこと以外は、戻り値を想定するというような「推測」で済まされるようなことはできません。

ただ、私は全体を通してみて、もし、もう一度、考える余裕があるなら、個々のメソッドやそれに関わるワザよりも、全体のプロセス自体に手を付けたほうがよいのではないか、と思います。

前のコードを、私自身で考えてみました。これは、定番のコードではあるので、私のアレンジあるものの、それ自体がオリジナルというわけではありません。シートモジュールにあるマクロコードをコピーしたいという特例の場合は、以下のコードを少し変更して可能です。これは一例ですが、こういうものは自力で編み出したわけではなく、VBAの入門時に、教わっているものです。6年経っても、そのとき覚えたものは忘れていません。

http://oshiete1.goo.ne.jp/qa4148672.html

----------------------------------------
Sub 保存3()
  Dim orgShCnt As Integer
'  Dim shName As String
  Dim fn As Variant
  'ブックのシートの規定数
  orgShCnt = Application.SheetsInNewWorkbook
  Application.SheetsInNewWorkbook = 1
  With Worksheets("Sheet1")
'    shName = .Name
    .Cells.Copy
  End With
  With Workbooks.Add  '※
    .ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
    '規定数を戻す
    Application.SheetsInNewWorkbook = orgShCnt
    'shName → は、"" になっている
    fn = Application.GetSaveAsFilename("", "Excelブック(*.xls),*.xls", 1, "保存")
    If VarType(fn) = vbBoolean Then
      .Close False
      MsgBox "キャンセルしました。", 48
      Exit Sub
    End If
    .SaveAs fn
    .Close False
  End With
  MsgBox "終了しました。", 64
End Sub


----------------------------------------
※ Workbooks.Add というメソッドで、明示的なブックを生成していればこそ、そのオブジェクトは確実に取得できるわけです。Application の NewBook イベントで、ブックオブジェクトは取得は出来ますが、それは、ひとつのプロセスの中にはありません。

はたして、本当に、Sheets(1).Copy でオブジェクトを捕らえることが必要なのか、と思います。私は、今まで、VBAのコードを2~3千件書いていますが、ほとんど、その方法は、記録マクロを写した程度にしか、そのような方法は出てこないように思います。

失礼な言い方があったら、お許しください。

こんばんは。

少し、全体的に考えさせてもらいました。ご質問の最終的な終着点がどういうところにあるのかはあまりはっきりしませんし、私が書いたところで、この手の話は、あまり分かってもらえるという自信はありません。merlionXXさん、ご自身のVBAのコーディングの問題であって、個々の問題ではないからでもあります。

今回の質問は、merlionXX さん自身が、解答した中で考えたことでしょうし、まさか、サブルーチンや特殊なコードで解決をしようと思ったわけではないと思います。

実際のコードとし...続きを読む

Q音読みと訓読みについて

恥ずかしい話ながら度忘れしてしまいました。
音読みがカタカナで訓読みがひらがなだったでしょうか?
例えば「飛」という感じなら、
音読みは「ヒ」で訓読みは「とぶ」の「と」でいいのでしょうか?

Aベストアンサー

念のため,gooのトップページからひける三省堂の『大辞林』で調べてみたところ,

くん【訓】 漢字に、それが表す意味に相当する日本語を当てた読み方。「山」を「やま」、「飲」を「のむ」と読む類。字訓。

と説明されていましたので,やはり送りがなまで含むと考えた方が良さそうです。

ところで,質問者さんがお聞きになりたいのは,結局どういうことなのでしょうか?
回答No.1…音・訓の定義。
No.2…辞典などで両者を区別して表記する方法。
No.3…音と訓の見分け方。
私は質問欄に書かれた質問文に対して,素直に回答したのですが,ずれてましたかね。

ちなみに,No.3で書かれた方法は,大体は当てはまりますが,万能ではありません。
たとえば「絵」(エ)は,小さい子でも意味はよく分かるし,単独で使いますが,音読みです。(カイももちろん音読みです)
したがって,きちんと音訓を見分けようとしたら,中国語ではどう発音するか(それも,現代の中国語でもいいけれど,できればむかしの中国語)を知る必要があります。
でも,小学生に(いや,大人でも)要求するのはむちゃなので,一種の便法としてそういった教わり方をすることが多いですね。

念のため,gooのトップページからひける三省堂の『大辞林』で調べてみたところ,

くん【訓】 漢字に、それが表す意味に相当する日本語を当てた読み方。「山」を「やま」、「飲」を「のむ」と読む類。字訓。

と説明されていましたので,やはり送りがなまで含むと考えた方が良さそうです。

ところで,質問者さんがお聞きになりたいのは,結局どういうことなのでしょうか?
回答No.1…音・訓の定義。
No.2…辞典などで両者を区別して表記する方法。
No.3…音と訓の見分け方。
私は質問欄に書かれた質問文に...続きを読む

Qworksheet_changeがループする

worksheet_change イベントでの質問です。シートに文字が入力された時に、他のセルに値をコピーしたいのですが、一つ目の値を代入した時点で、再びchangeイベントが発生して、この関数の頭に戻ってしまいます。実行中は、changeイベントを発生しないようにできないのでしょうか。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, j As Integer

j

Aベストアンサー

下記ページの「Changeイベント」が参考になります。

Excel(エクセル) VBA入門:ワークシートのイベント
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

Q音読みと訓読みの見分け方

学校の漢字のテキストの中に、音読みか訓読みか判別せよ。のような問題があるのですが、音読みと訓読みの判別方法がわかりません。
歯がたたないので分かる方がいらっしゃいましたら回答お願いいたします。

Aベストアンサー

音読みは一拍「歩(ほ)」「社(しゃ)」か二拍「説(せつ)」「塾(じゅく)」しかありませんので、
「形(かたち)」、「椿(つばき)」などは訓読みです。

(A) 読みが二拍の場合
まず
1. 「ん」で終わるものは全て音読み。「運(うん)」「番(ばん)」「縁(えん)」
2.「きゃ」「しゅ」「ちょ」などの拗音を含むものは音読み。「客(きゃく)」、「蝶(ちょう)」
3.濁音やラ行で始まるものも訓読みはまずありません。「毒(どく)」、「台(だい)」、「陸(りく)」、「列(れつ)」、「蝋(ろう)」

次に
4.音読みの末尾に来る字は「ツ、チ、ク、キ、イ、ウ、ン」の七種類しかありません。
(「ツチクキイーウン〔土茎いい運〕」などの語呂合わせで覚えてください。)
したがって、「夢(ゆめ)」、「里(さと)」、「春(はる)」などは音読みではあり得ません。
紛らわしいのはその条件に当てはまっているものです (「ん」はA-1により音読み)。
下記の例の場合、括弧内の読みから錯覚しやすいと思います。
 「蜜(みつ)」は音読み、「辰(たつ)」は訓読み (「蜜豆」「蜂蜜」)
 「鉢(はち)」は音読み、「蜂(はち)」は訓読み (「鉢巻」「すり鉢」)
 「幕(まく)」は音読み、「枠(わく)」は訓読み (「黒幕」/「枠外」)
 「席(せき)」は音読み、「関(せき)」は訓読み (「関所」)
 「塀(へい)」は音読み、「灰(はい)」は訓読み (「板塀」/「灰褐色」)
 「塔(とう)」は音読み、「夕(ゆう)」は訓読み (「夕刊」「夕食」)

(B) 読みが一拍の場合
これが難しいのです。
A-2、A-3により「社(しゃ)」、「碁(ご)」、「櫓(ろ)」などは音読みと判定できますが、それ以外はどちらもあり得るからです。
* 特に間違えやすいのは「場(ば)」で、例外的に濁音でも訓読みです。
 「場所(ばしょ)」、「職場(しょくば)」などにより、音読みと錯覚しやすいのです。
 「絵(え)」は音読み、「江(え)」は訓読み
 「夜」の「や」は音読み、「よ」は訓読み
 「戸」の「こ」は音読み、「と」は訓読み

◇最終的には漢和辞典で確認するしかありませんが、
 ・同じパーツを含んだ同音、類似音があるものは音読み
 「職(しょく・しき)」と「織(しょく・しき)」、「馬(ば・ま)」と「罵(ば)」
 「塀(へい)」と「併(へい)」、「蜜(みつ)」と「密(みつ)」
 ・もう一つの読みと比べてみる
 「関」は「せき」のほかに「かん」の読みがあり、「関係(かんけい)」などの熟語から、「かん」が音、「せき」は訓と判定。
 「場」は「ば」のほかに「じょう」の読みがあり、「戦場(せんじょう)」などの熟語から、「じょう」が音、「ば」は訓と判定。

「絵」は、「絵画(かいが)」の「かい」が音で、「絵巻(えまき)」「墨絵(すみえ)」などの「え」は訓だと考えがちですが、
これは漢音「クワイ」、呉音「ヱ」に由来し、どちらも音なのです。
「会社(かいしゃ)」と「法会(ほうえ)」「一期一会(いちごいちえ)」
「回転(かいてん)」と「回向(えこう)」
とくに「絵」のほうは適当な訓がないため、音に訓のはたらきをもたせて使います。
「菊の絵」の「きく」も「え」も音ですが、訓のはたらきをしています。

これは余談ですが、「当用漢字音訓表」では「奥」の読み「オク」を誤って音としていました。
「ツチクキイウン」に該当し、「奥義(おうぎ)」を「おくぎ」と読むこともあるので、「憶」「屋」などの連想から錯覚したのでしょう。
「常用漢字表」では訂正されています。

音読みは一拍「歩(ほ)」「社(しゃ)」か二拍「説(せつ)」「塾(じゅく)」しかありませんので、
「形(かたち)」、「椿(つばき)」などは訓読みです。

(A) 読みが二拍の場合
まず
1. 「ん」で終わるものは全て音読み。「運(うん)」「番(ばん)」「縁(えん)」
2.「きゃ」「しゅ」「ちょ」などの拗音を含むものは音読み。「客(きゃく)」、「蝶(ちょう)」
3.濁音やラ行で始まるものも訓読みはまずありません。「毒(どく)」、「台(だい)」、「陸(りく)」、「列(れつ)」、「蝋(ろう)」

次に
4.音...続きを読む

Qworksheet.find で Day(Now)

EXCEL マクロでworksheet.find で 特定の日付の並んだ列に
Day(Now) を判定基準にした所、2011/1/24 に判定処理を
かけたにもかかわらず、2011/11/24 がヒットします。
2011/1/24 もヒットするのですが、11/24 は明らかに
判定ミスなのですが、どうしてこのような事が起こるのでしょうか?

Sub ChkDate()
'
' ChkDate Macro
' マクロ記録日 : 2008/06/05 ユーザー名 : XXXXXX
'
Dim Rslt, firstaddress, targetrow, c
Dim Style, Title, Help, Ctxt, Response, MyString

'
Style = vbYesNo + vbInformation + vbDefaultButton2
Title = "Result"
Help = ""
Ctxt = 1000

Rslt = ""

Worksheets("LIST").Activate


With Worksheets("LIST").Range("B6:B28")
Set c = .Find(Day(Now), LookIn:=xlValues)
Rslt = ""
If Not c Is Nothing Then
firstaddress = c.Address
Do
Rslt = Rslt + Worksheets("LIST").Cells(c.Row, 1) + Chr(10) + Chr(13)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstaddress
End If
End With

If Rslt = "" Then
Rslt = "No Match"
GoTo LabelEnd
End If

Response = MsgBox(Rslt, Style, Title, Help, Ctxt)
If Response = vbYes Then
MyString = Rslt
Else
MyString = "No"
End If

LabelEnd:

End Sub

EXCEL マクロでworksheet.find で 特定の日付の並んだ列に
Day(Now) を判定基準にした所、2011/1/24 に判定処理を
かけたにもかかわらず、2011/11/24 がヒットします。
2011/1/24 もヒットするのですが、11/24 は明らかに
判定ミスなのですが、どうしてこのような事が起こるのでしょうか?

Sub ChkDate()
'
' ChkDate Macro
' マクロ記録日 : 2008/06/05 ユーザー名 : XXXXXX
'
Dim Rslt, firstaddress, targetrow, c
Dim Style, Title, Help, Ctxt, Response, MyString

'
Style = vbYesNo + vbInfor...続きを読む

Aベストアンサー

原因の1つは、Day(Now) ですね。
これだと、「24」を探すことになります。
なので、1月24日 でも 11月24日 でもヒットすることになります。

Format(Date, "m月dd日") を探すようにして、LookAt:=xlWhole も追加しましょう。

"m月dd日"の部分は、実際の表示形式にあわせてください。

Q「訓読み」の意味に関して

「訓読み」の意味に関して

「日本に於ける漢字には音読みと『訓読み』がある」、この表現に特には依存ないものと推測します。
「朝鮮に於ける漢字には音読みがあるだけで『訓読み』がないらしい」、こういう表現は可能ですか。つまり『訓読み』とは日本語・日本文に限定した用語であるやなしやの疑問です。

よろしくお願いします(回答者固有の感覚が集まることによって事の真偽が多数決で決まる雰囲気が出るのは困るので、説得力のある回答を希望します)。

Aベストアンサー

詳しいわけではないので, いくつかのキーワードを使って自分で調べることをお勧めします:
「訓読み」は本来「漢字と一緒に導入された音」である「音読み」に対し「その漢字語が表わす事物のやまとことばにおける呼び方」を漢字に紐つけたものです. まあ, 今では漢字語の意味と離れた「国訓」もいろいろあったりするわけですが....
で, 一応朝鮮語にも (日本語でいうところの) 「訓読み」がなかったわけではありません. もともと文字を持たなかったわけですから, 漢字の導入とともに「朝鮮語を漢字で書こう」と考えるのはある意味当然です. 現在でも「吏読」「郷札」「口訣亅などが知られています. このうち「郷札」は「漢字語が表わす事物」を朝鮮語で読むものと解されており, これはまさに日本語でいうところの「訓読み」そのものです.
ちなみに「口訣亅は漢文における訓点 (これが発達したのが日本語の「カタカナ」), 「吏読」は朝鮮語の語順で書いたときに文法的要素 (漢文における訓点) を「漢字で書いて朝鮮語的に読む」もの (日本語で進化したのが「ひらがな」) です.
余談ですが, もちろん「朝鮮語で『訓読み』と表現するかどうか」は全く別の話です.

詳しいわけではないので, いくつかのキーワードを使って自分で調べることをお勧めします:
「訓読み」は本来「漢字と一緒に導入された音」である「音読み」に対し「その漢字語が表わす事物のやまとことばにおける呼び方」を漢字に紐つけたものです. まあ, 今では漢字語の意味と離れた「国訓」もいろいろあったりするわけですが....
で, 一応朝鮮語にも (日本語でいうところの) 「訓読み」がなかったわけではありません. もともと文字を持たなかったわけですから, 漢字の導入とともに「朝鮮語を漢字で書こう」と考え...続きを読む

Q定数の宣言ってdimは使えないのですか?

VBAです。
標準モジュールに

Option Explicit
Public Const フォルダ名 As String = "新しいフォルダー"
Sub aaaa()
End Sub

はできるのですが、

Option Explicit
dim Const フォルダ名 As String = "新しいフォルダー"
Sub aaaa()
End Sub

は、エラーになってしまいます。

Option Explicit
Sub aaaa()
dim Const フォルダ名 As String = "新しいフォルダー"
End Sub

もダメみたいです。

定数を使うときは、必ずPublicで宣言しなけらばいけないのでしょうか?

Aベストアンサー

ちょっと意味が分からないのですが
Dim は変数
Constは定数 なので
一緒に指定することはないと解釈するのですが

Sub aaaa()
Const フォルダ名 = "新しいフォルダー"
End Sub

ではダメなのでしょうか。


人気Q&Aランキング

おすすめ情報