Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


719 / 13645 ツリー ←次へ | 前へ→

【78775】ひらがなの表示/非表示 まめ 17/1/23(月) 13:30 質問[未読]
【78776】Re:ひらがなの表示/非表示 独覚 17/1/23(月) 13:56 発言[未読]
【78777】Re:ひらがなの表示/非表示 まめ 17/1/23(月) 14:11 質問[未読]
【78778】Re:ひらがなの表示/非表示 独覚 17/1/23(月) 14:31 発言[未読]
【78779】Re:ふりがなの表示/非表示 まめ 17/1/23(月) 14:56 回答[未読]
【78780】Re:ふりがなの表示/非表示 まめ 17/1/23(月) 15:13 質問[未読]
【78783】Re:ふりがなの表示/非表示 独覚 17/1/23(月) 15:50 発言[未読]
【78781】Re:ふりがなの表示/非表示 独覚 17/1/23(月) 15:39 発言[未読]
【78782】Re:ふりがなの表示/非表示 まめ 17/1/23(月) 15:47 お礼[未読]
【78784】Re:ふりがなの表示/非表示 独覚 17/1/23(月) 16:13 発言[未読]
【78786】Re:ふりがなの表示/非表示 まめ 17/1/23(月) 16:33 お礼[未読]

【78775】ひらがなの表示/非表示
質問  まめ  - 17/1/23(月) 13:30 -

引用なし
パスワード
   ・ひらがなが表示されていたら非表示
・ひらがなが表示されていなかったら表示(ひらがな設定がなければ自動設定)
・ひらがなが表示されていなかったら表示

を再現したいのですが、何が間違っているのでしょうか?


Sub ふりがなの表示()
  
  On Error Resume Next

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetics.Visible = True Then
      mySelect.Phonetics.Visible = False
      GoTo Jump
    End If

    If mySelect.Characters.PhoneticCharacters = "" Then
      With mySelect
        .SetPhonetic
        .Phonetics.Visible = True
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      GoTo Jump
    End If

    If mySelect.Characters.PhoneticCharacters <> "" Then
      With mySelect
        .Phonetics.Visible = True
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      GoTo Jump
    End If

Jump:

  Next

End Sub

【78776】Re:ひらがなの表示/非表示
発言  独覚  - 17/1/23(月) 13:56 -

引用なし
パスワード
   ▼まめ さん:
単にふりがなを振るだけであればお書きのVBAでいいように思いますが何が
問題なのかを説明してください。

もしかして「ひらがな」で「ふりがな」を振りたいのでしょうか?

その場合は
.Phonetics.CharacterType = xlKatakana

.Phonetics.CharacterType = xlHiragana
で。

【78777】Re:ひらがなの表示/非表示
質問  まめ  - 17/1/23(月) 14:11 -

引用なし
パスワード
   説明不足で申し訳ありません。

冒頭に記載した↓
・ひらがなが表示されていた場合は非表示
・ひらがなが表示されていなかった場合は表示(ひらがな設定がなければ自動設定)
・ひらがなが表示されていなかった場合は表示

をVBAで判定して処理されるようにしたいのですが、実行すると
・ひらがなが表示されていた場合は非表示

だけ実行されてしまい、表示されていなかった場合の挙動が上手くいきません。

また、単純に「ひらがなが表示されていなかった場合は表示」を下記の構文で書いたところ、エラーとなってしまいます。

 If mySelect.Phonetics.Visible = False Then

それぞれのパートは不自然ではないのですが、ひらがなが表示されているかされていないかの判定が上手くできません。

【78778】Re:ひらがなの表示/非表示
発言  独覚  - 17/1/23(月) 14:31 -

引用なし
パスワード
   ▼まめ さん:
結局「ひらがな」ではなく「ふりがな」なんですね?

また「ふりがな」は「全角カタカナ」でいいんですね?

また、Excelのバージョンはなんでしょうか?
こちらではWindows7+Excel2010で

>・ふりがなが表示されていた場合は非表示
>・ふりがなが表示されていなかった場合は表示(ふりがな設定がなければ自動設定)
>・ふりがなが表示されていなかった場合は表示
(「ひらがな」を「ふりがな」に修正済み。

という挙動になっています。

あとVBAのほうは

Sub ふりがなの表示()
 
   On Error Resume Next

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetics.Visible = True Then
      mySelect.Phonetics.Visible = False
    Else

      If mySelect.Characters.PhoneticCharacters = "" Then
        With mySelect
          .SetPhonetic
          .Phonetics.Visible = True
          .Phonetics.Alignment = xlPhoneticAlignDistributed
          .Phonetics.CharacterType = xlKatakana
          .Phonetics.Font.Size = 6
        End With
      End If
      mySelect.Phonetics.Visible = True
    End If
  Next

End Sub
でも。

【78779】Re:ふりがなの表示/非表示
回答  まめ  - 17/1/23(月) 14:56 -

引用なし
パスワード
   ▼独覚 さん:
おっしゃるとおり、「ひらがな」ではなく「ふりがな」ですね。
重ねて失礼しました。

美しい構文ありがとうございます。

ただ、頂いたものでも「ひらがなが表示されていなかった場合は表示」が挙動しません。

なお、当方の環境は「Windows7+Excel2007」です。
独覚さんの環境で正しく挙動しているのであれば、バージョンの問題ですね。

【78780】Re:ふりがなの表示/非表示
質問  まめ  - 17/1/23(月) 15:13 -

引用なし
パスワード
   ▼独覚 さん:
追加で確認したところ、「On Error Resume Next」を付けなければ、

    If mySelect.Phonetics.Visible = True Then

でも、エラーが出ていることが分かりました。

そのため、私の構文でも独覚さんの構文でも、下記だけが処理されていたようです。

      mySelect.Phonetics.Visible = False

ふりがなが表示されているかされていないかを判定する構文はあるのでしょうか?

【78781】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 15:39 -

引用なし
パスワード
   ▼まめ さん:
私のほうでも2007で試してみましたが2007ではふりがな表示になっていないセルで
If mySelect.Phonetics.Visible = True Then
がエラーになっていました。

【78782】Re:ふりがなの表示/非表示
お礼  まめ  - 17/1/23(月) 15:47 -

引用なし
パスワード
   ▼独覚 さん:
わざわざご確認頂き、ありがとうございます。

バージョンの問題とわかったので、他の方法で判定できなければ諦めます。
(会社のPCが2007なので、どうしようもなく。)

ちょっと悲しいですが、下記で代用できますし。
  
  Application.SendKeys Keys:="%hgs", Wait:=True

ありがとうございました。

【78783】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 15:50 -

引用なし
パスワード
   ▼まめ さん:
一応これだと2007でも2010でもできました。
ただ、どんな場合でも大丈夫かは自信がありませんが。
(PhoneticsとPhoneticの違いに注意)
Sub ふりがなの表示()

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetic.Visible = True Then
      mySelect.Phonetic.Visible = False
    Else

      With mySelect
        .SetPhonetic
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      mySelect.Phonetic.Visible = True
    End If
  Next

End Sub

【78784】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 16:13 -

引用なし
パスワード
   ▼まめ さん:
発言が途中に入っているので気付き辛いので念のため。

78783で2007でも実行可能なVBAを挙げました。

【78786】Re:ふりがなの表示/非表示
お礼  まめ  - 17/1/23(月) 16:33 -

引用なし
パスワード
   ▼独覚 さん:
ありがとうございます。

凄いですね。
私は気がつきませんでした。

参考にさせて頂きます。

719 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free