Excel VBA質問箱 IV

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

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


184 / 3841 ページ ←次へ | 前へ→

【78788】Re:セル内で改行した文字列をコピーしたい
お礼  匿名希望  - 17/1/23(月) 16:52 -

引用なし
パスワード
   やっぱりマクロやVBAでは無理ですか
まめさんありがとうございます。
・ツリー全体表示

【78787】Re:セル内で改行した文字列をコピーしたい
回答  まめ  - 17/1/23(月) 16:38 -

引用なし
パスワード
   ▼匿名希望 さん:
アナログな方法ですが、

1.Excelで該当セルをコピー
2.WordやOutlook等に貼り付け
3.WordやOutlookの該当文字列をコピー
4.Excelに貼り付け

で、希望の形に貼り付けられますよ。
・ツリー全体表示

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

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

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

参考にさせて頂きます。
・ツリー全体表示

【78785】セル内で改行した文字列をコピーしたい
質問  匿名希望  - 17/1/23(月) 16:27 -

引用なし
パスワード
   例)
A1セル内に
あか12
いぬ34
A2セル内に
うし56
えんぴつ78
おに910
とセル内の文字列をコピーしたいのですが、コピーしたいセルが1000以上もあります。1000以上のセル内に文字列が1行のセルだったり、文字列が5行のセルだったりとセルによってバラバラです。
コピーした文字列を隣のB1に「あか12」、B2に「いぬ34」、B3に「うし56」…という様に貼り付けをしたいのですがどうすればいいのでしょうか?
・ツリー全体表示

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

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

78783で2007でも実行可能なVBAを挙げました。
・ツリー全体表示

【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
・ツリー全体表示

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

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

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

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

ありがとうございました。
・ツリー全体表示

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

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

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

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

    If mySelect.Phonetics.Visible = True Then

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

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

      mySelect.Phonetics.Visible = False

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

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

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

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

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

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

【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
でも。
・ツリー全体表示

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

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

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

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

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

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

 If mySelect.Phonetics.Visible = False Then

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

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

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

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

その場合は
.Phonetics.CharacterType = xlKatakana

.Phonetics.CharacterType = xlHiragana
で。
・ツリー全体表示

【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
・ツリー全体表示

【78774】Re:エクセルの指定セルをテキストデータ...
回答  γ  - 17/1/23(月) 7:09 -

引用なし
パスワード
   > 元のエクセルがあるフォルダと同じフォルダ内に作成するためには、

そのマクロが記載されているブックのフォルダは
ThisWorkbook.Path
で得られます。

テキストファイルの操作にあたって、
「フォルダ名を付けたファイル名」(フルパス名)を使うことです。
間の"\"を忘れないようにしてください。
・ツリー全体表示

【78773】Re:エクセルの指定セルをテキストデータ...
質問  かわかみまめお  - 17/1/23(月) 1:13 -

引用なし
パスワード
   β様、ありがとうございます。
γ様へのお礼(返信)と重複しますが、その後、少しずつですが、御教示に従い、自分でも調べました。

タブですが、頂いた、=CODE(MID(B1,ROW(A1),1) で、元のエクセルのセル内を調べたところ、全て「10」という値になりました。
そこで、
Print #1, SaveD を
Print #1, Replace(SaveD, vbLf, vbCrLf)に変更すること、また、そもそものエクセルのっ雛型を自分でも処理できるように変更して、なんとか最低限の目標を達成することができました。 エクセルのVBAもよくわかっていない自分が、エクセル以外のものを操作するということの難しさを改めて感じました。

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


なお、甘えてしまって恐縮ですが、追加で御教示頂きたいのですが、テキストファイルが、カレントフォルダに作成されますが、これを常時、元のエクセルがあるフォルダと同じフォルダ内に作成するためには、どのような構文を書き加えたらよろしいでしょうか。
・ツリー全体表示

【78772】Re:エクセルの指定セルをテキストデータ...
質問  かわかみまめお  - 17/1/23(月) 1:10 -

引用なし
パスワード
   γ様、ありがとうございます。
その後、少しずつですが、自分でも調べました。

(1)ステップ実行をして、イミディエイトウインドウを見ながら、
SaveDの変化を確認しました。考えてようやく、理解できました。
(自分では、saveD の値が、AAA、次が、AAAタブBBB 次が、AAAタブBBBタブCCC
と累積していく場合に、前の分を書き込んでからでないと、コンピュータは、忘れてしまうのではないか、という考えがあったもので、このような質問をしてしまいました。)

(2)セルの複数行についても、β様からの御教示もあり「タブに関する、エクセルとwindows の違い」なども参考にしました。今の自分では、ちょっと難しいので、
元のエクセルの雛型を以下のようにしました。
  
      A列                B列
1行目 ファイル名となる文字列(XXX) テキストに書き出す内容(セル内複数行)
2行目 ファイル名となる文字列(YYY) テキストに書き出す内容(セル内複数行)

そして、セルの指定は、複数セルの「範囲」ではなく、セル「B1」しか選ばず、XXXファイルを作成する、ことににしました。そのために、
Print #1, SaveD を
Print #1, Replace(SaveD, vbLf, vbCrLf) へ変更することにより、最低限の目的は達成できました。(次の目標は、「B1:B2」を選んで、一気にXXX とYYYのファイルを作成することです。)

本当にどうもありがとうございました。

(3)γ様、もう一点教えて頂きたいことが出てきました。
今回は、テキストファイルが、カレントフォルダに作成されますが、これを常時、元のエクセルがあるフォルダと同じフォルダ内に作成するためには、どのような構文を書き加えたらよろしいでしょうか。
・ツリー全体表示

【78771】Re:マクロで保存したい
お礼  北風  - 17/1/19(木) 13:46 -

引用なし
パスワード
   ▼β さん
対応有難うございます。思い通りの仕組みでした
有難うございました


▼β さん:
>▼北風 さん:
>
>↑
>
>単純に、直接保存をしています。
>ただ、xl2003の環境がないので、試してはいません。
>たしか、この書き方で充分だったような記憶です。
・ツリー全体表示

【78770】Re:マクロで保存したい
発言  β  - 17/1/18(水) 18:16 -

引用なし
パスワード
   ▼北風 さん:



単純に、直接保存をしています。
ただ、xl2003の環境がないので、試してはいません。
たしか、この書き方で充分だったような記憶です。
・ツリー全体表示

【78769】Re:マクロで保存したい
発言  β  - 17/1/18(水) 18:15 -

引用なし
パスワード
   ▼北風 さん:

Sub Test()
  Dim fm As String
  With ThisWorkbook.ActiveSheet
    fm = "S:\TTT\わい\" & .Range("E24").Value & "(" & .Range("H24").Value & ").xls"
  End With
  ThisWorkbook.SaveAs fm
End Sub
・ツリー全体表示

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