リンクさせたデータの中に「123(半角)」があったとして、
これを縦書きで表示させたいときに、
横に「123」と並べることはできますか?

例えて書けば・・・
「これは123円です」のデータをリンクさせて、縦書き表示にしたくて、

 こ
 れ
 は
 123
 円
 で
 す

みたいなイメージ???
1でも2でも折り返されたくなくて、3で折り返されたい感じ???
加えて、必ずしも3文字とも決まっていなくて・・・

具体的に記述して教えていただけると、ありがたいです。
かなりワガママですが、コメントを入れてください・・・
お願いします。

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

A 回答 (7件)

予想通りの指摘ですね。

自分でも見苦しいかなと思っていました。

縦書きはセル単位指定のため『。、』のみを縦書きにするのは難しそうです。
『。、』のみ強制的に縦書フォントに変えてみましたが、回転できないのでうまくいきませんでした。

より自然に見えるようにしてみました。(Excelの縦書きと比べて)
『。』はなんとかごまかせている?『、』は苦しいかも知れません。現時点ではこれが最善です。
最後の方を下記のようにしてみて下さい。

  Next
  '『。、』を縦書き風に見せる対応
  TateGaki = Application.Substitute(TateGaki & Right(moji, 1), "。", " " & " " & Chr(223))
  TateGaki = Application.Substitute(TateGaki, "、", " " & "`")
  HankakuYokogaki = TateGaki
End Function


次に、別の考え方でマクロを作ってみました。これはExcelの縦書きと同じ表示になります。
値や式の入っているセルがA1とすると、縦に書きたいセルに=A1として表示させます。そのセルを選択したまま下記のマクロを実行します。
指定したセルから下に向かって順に文字を分割して表示します。セルの高さを操作する必要はありません。セルの結合もしません。

コピーして標準モジュールに貼り付けます。(マクロをショートカットキーを割り当てた方が楽です)
縦書きにした時に【】などを上下にしたい場合は、If InStr(" ") に全角で挿入して下さい。

Public Sub HankakuYokogaki2()
  Dim rg As Range '縦書きにするセル
  Dim moji As String 'セルの文字
  Dim L As Integer 'カウンタ
  Dim elm1, elm2, Welm As String '前後の1文字と書き出す文字
  Dim mojiCD1, mojiCD2 As Long '前後の文字の文字コード
  Dim kaigyo As Boolean '改行有無
  Dim rowCot As Integer '書き出す行位置
  Dim cutPot As Integer '書き出す文字の開始位置

  Application.ScreenUpdating = False
  Set rg = ActiveCell
  moji = rg.Text & " " '前後で判定するので1文字ダミーで増やしておく
  cutPot = 1
  For L = 1 To Len(moji) - 1
    elm1 = Mid(moji, L, 1): mojiCD1 = Asc(elm1) '調べる文字
    elm2 = Mid(moji, L + 1, 1): mojiCD2 = Asc(elm2) '調べる文字の次の文字

    kaigyo = True
    If 48 <= mojiCD1 And mojiCD1 <= 57 Then
      If 48 <= mojiCD2 And mojiCD2 <= 57 Then
        kaigyo = False '半角数値が続いたら改行しない
      End If
    End If
      If kaigyo = True Then '改行する場合
        Welm = Mid(moji, cutPot, L - cutPot + 1)
        With rg.Offset(rowCot, 0)
          .Value = Welm
          .HorizontalAlignment = xlCenter 'センタリング
          .Orientation = 0 '横書きにしておく(初期値)
          If InStr("。、ゃゅょャュョっッぁぃぅぇぉァィゥェォ()", Welm) > 0 Then
            .Orientation = xlVertical '句読点、小文字なら縦書きにする
          End If
        End With
        cutPot = L + 1 '書き出す位置を進める
        rowCot = rowCot + 1 '書き込む行を進める
      End If
  Next
  Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

これで十分です。
本当にありがとうございました。
アナタのような方は、本当に貴重です。
また見かけたらお世話してください。

お礼日時:2001/08/28 13:05

>どうしても・・・どうしても・・・うまく使いこなすことができません・・・。



まず、ANo.#3は一部誤りがあったのでANo.#4の修正をお願いします。
 =HankakuYokogaki(今ある算式)
をセットしたセルの書式は、
 (1)折り返して全体を表示する(配置タグ)
 (2)方向は横書き(分度器みたいに見えるほうで0度。初期値です)
 (3)セルの高さは全体が表示できる高さに増やします。
 (4)セルの幅も半角横書き部分が表示できる幅に増やします。

とします。エラー表示が出るのであれば補足してください。
    • good
    • 1
この回答へのお礼

お礼が遅くなりました。
ネットカフェで試すとうまくできるのですが、どういうわけか自宅に帰ると・・・。
でも、ここで試すと「!!!」です。
本当に感激です。
ありがとうございました。

ところで、リンク元に「。」や「、」があると、見た感じ、ヘンですね(笑)。
何か解決策はありますか?
もう本当に贅沢すぎ。。。
今後も知恵を貸してくださいね。

お礼日時:2001/08/22 10:22

>実は…VBで具体的に記述していただけると、「!!!」でした。



ちょっと時間が空いたんで、実際に作ってみました。


フォームにピクチャボックス(Picture1),テキストボックス(Text1),ボタン(縦書きボタン)を配置して、以下のようにコーディングしてください。
Picture1のAutoRedrawはTrueに設定しときます。

テキスト中の$H(文字列)を縦中横表示します。
特殊書式の文法チェックとか、ピクチャボックス外にはみ出したときの処理とかは入ってません。
句読点の位置とかもおかしくなるんで、句読点についての処理も入れたほうがいいですね。

一応それなりにコメント入れましたが、不明点とかあったら補足してください。

****************************************************

Option Explicit
Const MARGIN_TOP = 5 * 56.7 '上余白5mm
Const MARGIN_RIGHT = 5 * 56.7 '右余白5mm
Const LETTER_SPACING = 1 * 56.7 '字間1mm
Const LINE_HEIGHT = 10 * 56.7 '行間10mm



Private Sub Form_Load()
 Me.Text1 = "これは$H(123)円です。"
End Sub

Private Sub 縦書きボタン_Click()
 Dim Text As String
 Dim DrawChar As String
 Dim i As Long
 Dim x As Single, y As Single '字を書く座標(xは行の中心線)
 Dim StPos As Long, EdPos As Long '文字列内の位置情報
 Text = Me.Text1
 
 Me.Picture1.Cls
 Me.Picture1.FontName = "MS ゴシック"
 x = Me.Picture1.Width - MARGIN_RIGHT - (Me.Picture1.TextWidth("あ") / 2)
 y = MARGIN_TOP
 For i = 1 To Len(Text)
  DrawChar = ""
  '文字を一文字ずつ検査する。
  Select Case Mid$(Text, i, 1)
   Case vbCr, vbLf '改行コード
    x = x - LINE_HEIGHT
    y = MARGIN_TOP
    If Mid$(Text, i + 1, 1) = vbLf Then i = i + 1
   Case "$" '特殊書式
    'TODO:異常な文法に対する処理を入れること
    
    Select Case Mid$(Text, i + 1, 1)
     Case "$" '"$$"は"$"一文字とみなす
      DrawChar = "$"
      i = i + 1
     Case "H" '$H(文字列)は、文字列を縦中横表示
      StPos = i + 3
      EdPos = InStr(StPos, Text, ")", vbBinaryCompare)
      DrawChar = Mid$(Text, StPos, EdPos - StPos)
      i = EdPos
     Case Else'書式指定が間違ってる
      Debug.Assert True
    End Select
   Case Else
   '通常の文字
    DrawChar = Mid$(Text, i, 1)
  End Select

  '文字を描画
  If DrawChar <> "" Then
   With Me.Picture1
    .CurrentX = x - (.TextWidth(DrawChar) / 2)
    .CurrentY = y
    Me.Picture1.Print DrawChar
    y = y + .TextHeight(DrawChar) + LETTER_SPACING
   End With
  End If
 Next i
End Sub
    • good
    • 0
この回答へのお礼

あまりにもご丁寧で・・・感激→ダウン気味(笑)
ありがとうございました。

お礼日時:2001/08/15 13:28

最後から2行目を書き換えて下さい。

回答文書を記入中に関数名を変えてしまいました。

  HankakuTategaki = TateGaki & Right(moji, 1)
     ↓
  HankakuYokogaki = TateGaki & Right(moji, 1)
    • good
    • 0

Excelと仮定して回答します。

ユーザー定義関数を作ってみました。
  =HankakuYokogaki(今ある算式) として使います。
セルの書式は配置タブで、『折り返して全体を表示する』にチェック。方向は横書きにします。
Wordだったらすいません。参考にして下さい。

標準モジュールに貼り付けて下さい。
Public Function HankakuYokogaki(moji As String)
  Dim L As Integer 'カウンタ
  Dim elm1, elm2 As String '1文字
  Dim mojiCD1, mojiCD2 As Long '文字コード
  Dim TateGaki As String '縦書き文字
  Dim kaigyo As Boolean '改行有無
  For L = 1 To Len(moji) - 1
    elm1 = Mid(moji, L, 1): mojiCD1 = Asc(elm1)
    elm2 = Mid(moji, L + 1, 1): mojiCD2 = Asc(elm2)

    kaigyo = True
    '半角数値が続いたら改行しない
    If 48 <= mojiCD1 And mojiCD1 <= 57 Then
      If 48 <= mojiCD2 And mojiCD2 <= 57 Then
        kaigyo = False
      End If
    End If

    If kaigyo = True Then
      elm1 = elm1 & vbLf
    End If
    TateGaki = TateGaki & elm1
  Next
  HankakuTategaki = TateGaki & Right(moji, 1)
End Function
    • good
    • 0
この回答へのお礼

どうしても・・・どうしても・・・うまく使いこなすことができません・・・。
あなた様に作っていただいたマクロで、うまく活用できないのはこれが初めて。
私の使い方が悪いと思うのですが・・・。
何が原因かさえ分りません・・・。
セルの書式は・・・のあたりかな?
もし心当たりがあったら、また書き込んでください。
お願いします・・・。

お礼日時:2001/08/15 13:31

ありゃ、VBの質問でしたね。

スイマセン。

えーっと、VBでするには、

○Wordオブジェクトを貼り付けて、そこで、縦中横表示をやってしまう(手間は省けそう、だが、Wordが必須)

○ピクチャーボックスを使って、そこにPrintメソッドで力技で文字を書く。(面倒くさそう。あらかじめ「升目」を計算しといて、そこに文字を当てはめていくようにすればいいかな。"123"の横幅とか、一文字の高さとかはTextWidth,TextHeightメソッドで算出する。)

ってなやり方を思いつきました。

不明点とかあったら、補足に書いていただくとそれなりに協力しますんで。
    • good
    • 0
この回答へのお礼

ごめんなさい。
勉強不足で、あなた様のおっしゃっていること自体が、イメージ湧きません。
興味があったのは、升目を計算しておいて…のところ。。。
いろんなやり方があるのですね!

実は…VBで具体的に記述していただけると、「!!!」でした。
でも、目に止めていただいて、感謝感激です。
またお世話してください。
ありがとうございました。

お礼日時:2001/08/05 15:32

[縦中横]を使います。


123を選択して、書式-拡張書式-縦中横
です。
    • good
    • 0

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

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

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

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

Q一番左のシートのセルA6に入力した値を次のシート以降のシートに入力したい

Excel2003でマクロを作成しています。
複数のシートがあり一番最初のシートのセルA6に日付を入力します。
二番目以降のシートのA6に「一番左のシートのA6の値を入力しなさい」という関数をコードに書きます。これを何回も試行錯誤したのですができません。どうコードを書いたらいいかご教示ください。

Aベストアンサー

Dim sht As Worksheet

  For Each sht In Worksheets
    If sht.Index <> 1 Then
      sht.Range("A6").Value = Worksheets(1).Range("A6").Value
    End If
  Next

値ではなく、セルの参照を記入するのであれば
sht.Range("A6").Formula = "=" & Worksheets(1).Name & "!A6"
としてください。

QwebbrowserにappendChildでyahooへのリンクを追加させるには?

お世話になります。
以下のvb6のコードを見ていただきたいですが
bodyタグの中にh1タグしかない簡単なページに
<a href="http://www.yahoo.co.jp">ヤフーへ</a>
というaタグをウェブブラウザに表示させた際に追加させたいと
思っています。

その際、href属性とhttp://www.yahoo.co.jpという値を
つけくわえるコードがわかりません。
{vb.netだと elem.SetAttribute("HREF", http://www.yahoo.co.jp)
で記述できるみたいですが、vb6だとコンパイルエラーがでてしまいます}

どのようにコーディングすればよろしいでしょうか?
教えてください。お願い致します。




Private Sub Command1_Click()
WebBrowser1.Navigate ("http://hoho.hiho.jp/")

Do While WebBrowser1.Busy = True
'何もしないループ(笑)
DoEvents
Loop

Start = Timer
Do While Timer - Start < 2
DoEvents
Loop

Dim elm As IHTMLElement
Set elem = WebBrowser1.Document.createElement("A")
elem.innerText = "ヤフーへ"
WebBrowser1.Document.body.appendChild (elem)


End Sub

お世話になります。
以下のvb6のコードを見ていただきたいですが
bodyタグの中にh1タグしかない簡単なページに
<a href="http://www.yahoo.co.jp">ヤフーへ</a>
というaタグをウェブブラウザに表示させた際に追加させたいと
思っています。

その際、href属性とhttp://www.yahoo.co.jpという値を
つけくわえるコードがわかりません。
{vb.netだと elem.SetAttribute("HREF", http://www.yahoo.co.jp)
で記述できるみたいですが、vb6だとコンパイルエラーがでてしまいます}

どのようにコーディング...続きを読む

Aベストアンサー

> ですがappendChildでソースに組み込む方法が知りたいのです。

全体的に説明不足なのに、なぜ appendChild にこだわるのかの理由もなく、
回答を全否定されるのもなんだかなぁ...と思いますけど。

Dim elem As Variant '<--- Variant ならいけた

Set elem = WebBrowser1.Document.createElement("A")
elem.innerText = "ヤフーへ"
elem.href = "http://www.yahoo.co.jp" '<-- 追加
WebBrowser1.Document.body.appendChild (elem)

Qcanon MP600でA6ふちなし印刷

Canon MP600でA6ふちなし印刷

上記が出来る方法を探しております!急いでいます!

大変お恥ずかしい話ですが、A6原稿を作成した後にプリンターがA6に対応していないことに気がついてしま いまして…

easyphotoprintを試したのですが…ダメでした。
あとはPhotoshopです。
用紙をハガキに設定し、はみ出し量を最大に設定して印刷したのですが、右端が少し切れて左端が少し白くなってしまいます…


恥を承知の上お願いいたします!
Canon MP600でA6ふちなし印刷を出来る方法を教えてください!!

Aベストアンサー

PhotoshopでA6に目いっぱい作り直すのは可能でしょうか?
(むしろ元原稿全体をお使いのアプリケーション上で拡大できれば簡単なのですが。)
それが可能ならフチなし印刷ではなく作り直した原稿通りの大きさで印刷することはできると思います。

Photoshopではトンボを付けられると推測しますが、そうだとするとプリンタードライバ用紙設定をA4に設定しますとA4の実紙にA6のトンボ付きでプリントアウトされます。A6に切り抜けば完成します。A5の実紙を使っても同じです。
実際の操作は違うかもしれませんが、要点は大きい用紙設定をして小さい用紙のトンボを付けることです。

ただ上記はお使いの用紙を他の物に替えたくないならダメですが。

Qwordの縦書きダブルコーテーション

を入力したいのですが、””にしますと
左右の中央に来たり、上下の中央に表示されてしまいます

上の”は文字の右肩
下の”は文字の左下で”の向きが上向き

が希望です。
新聞や本の文章中はその用に表示されていると思いますが。
日本語であれば使用頻度高いと思います。

外字で作るのが一番なのでしょうか?

よろしくお願いいたします。

Aベストアンサー

wordのバージョンは、なんでしょうか?。
いま、2003でテストしました。
ダブルコーテーションを選択して、再変換すると9種類の選択肢が
でます。
その中に希望のものは、ありませんか??。

Qキャノンのプリンターで、A6印刷。

こんにちは!

この度、キャノンのip4200を購入し、同時にFUJIの
画彩写真仕上げA6を購入してきました。
A6を選んだのは、L版では少し小さく、2Lではちょっと
大きすぎるからだったのですが・・・。

ここで、プリンターのメニューで、A6がないことに
不覚ながら気がつきました。&、自分でサイズを
決める画面も見つけられませんでした・・・。

どなたか、A6の用紙に、出来れば、縁無しで印刷
出来る設定を、お教え頂きたく、思います。m(__)m

Aベストアンサー

いやいくらなんでも「はずれ」っていうのはないと思うんだけど。

#というつっこみでいいんだろうか?

ほんとにキヤノンのドライバーが入っているかどうか確認して、あやしければ再インストールがいいかと思う。
(印刷できるかどうかではなく。)
もう一度マニュアルを確認してみましょう。

わたしはiP4200を使っていないので詳しくはわからないが、今ダウンロードされているものとバージョンが同じかどうか確認しましょう。

#4さんが書いたように「印刷設定」の中に「ページ設定」タブが見つからなければ話が始まらない。


わたしが書いた「サーバーのプロパティ」というのはそのプリンターを開く前に、「プリンタとFax」の「ファイル」を探すんですよ。

参考URL:http://cweb.canon.jp/drv-upd/bj/ip-series.html

QActiveReportsで縦書きの帳票

VB6、ActiveReport1.5Jにて開発を行っております。

問題の帳票は ddOLandscape(横方向),A4で横方向(右)にレコードを追加する、といった類のものです。
そこで表示文字自体を右に90度回転させて
ddOPortrait(縦方向),A4
にして縦方向(下)にレコードを追加しようと考えたのですが、フォントでは"@MS 明朝"では左に90度回転だし(それだと集計も行っているので都合が悪いんです。)、何かいい方法がないかと思い質問しました。
よろしくお願いします。

Aベストアンサー

力技ですが、あらかじめ出力するデータを構造体の中に成形して格納し、それを出力すればどんな帳票でも出力できます。
DataInitializeで構造体を作成し、FetchDataで出力します。出力した行数をカウントする必要があります。
個人的には、横方向且つ縦方向にレコードを追加する帳票を最近作成しました。

QアウディA6アバントのステアリング

中古のアウディA6アバント(97年)を購入したのですが、ステアリングが擦れてかなり汚いので交換しようと思っています。でも値段が高い! オークションなどで探していますが、97のA6のステアリングがなかなかない状態です。そこでA6の新しい(98~02)タイプのものでも合うのか、あるいはA4のものでも合うのかなど、どなたかご存じの方がいらっしゃったら教えてください。A4でもいろいろあると思いますが、何年のものなら合う、など情報を提供いただければ幸いです。

Aベストアンサー

大事な事を書くのを忘れていました。

アウディのハンドルであれば、A3、A4、A6等車種に関わらず、ボスが共通なので、ステアリングは付くと思いますが、97年式のA6のステアリングが手元に無いので、ディーラーで確認してみてください。

98年以降のA3、A4、A6のステアリングは、調査の結果、ボスが共通なので、互換性があります。

なお、普通、ボスの変更はあまりしないので、04年モデルでも、ステアリングの取り付けは、大丈夫と思います。
(#1で回答したとおり、コネクタの加工は必要でしょうが)

Qvbsでファイルやフォルダのコピー中にプログレスバーを表示させるにはど

vbsでファイルやフォルダのコピー中にプログレスバーを表示させるにはどうすればいいでしょうか。
無言でコピーするコードはいろいろと紹介されているのですが、何も表示されないので進行状況がわかるようにしたいのです。
残り時間表示やパーセント表示などどのような表示方法でもいいのでおおよその進行状況がわかる方法をご存知でしたら教えて頂けないでしょうか。
宜しくお願い致します。
<例>
コピー元ファイル:"C:\test\*.*"
コピー先フォルダ:"C:\backup\"

Aベストアンサー

●ファイルのコピー中に視覚的なインジケータを表示する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct06/hey1010.mspx
にそのままの例が載っております。

Const FOF_CREATEPROGRESSDLG = &H0&
strTargetFolder = "C:\backup\"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(strTargetFolder)
objFolder.CopyHere "C:\test\*.*", FOF_CREATEPROGRESSDLG

Q=CONCATENATE(A6:C6)のようにできますか?

Win2000/EXCEL2000で、連続するセルの内容を結合するのに、=CONCATENATE(A6,B6,C6)ならできるのに、
=CONCATENATE(A6:C6)では入力はできますが結果はエラー(#VAKUE)になります。
セルが多い場合不便ですが、使い方を誤っているのでしょうか?

Aベストアンサー

=CONCATENATE(A6:C6)はマイクロソフトもはっきり出来ないと言っているので無理ではないかと。

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;294286

Qレジストリエディタを起動させて手前に表示させたい

VBE画面から

Sub test()
Dim i As Long
i = Shell("C:\WINDOWS\regedit.exe")
End Sub

を実行するとレジストリエディタを起動できるのですがアクティブ(前画面)になりません。

Sub test()
Dim i As Long
i = Shell("C:\WINDOWS\regedit.exe")
AppActivate i
End Sub

これにしたも同じく全画面になりません。
ただ、一度起動した後に再度このコードを実行すると、
プロシージャの呼び出し、または引数が不正です。(Error 5)
と言うエラーになりますが、1回目に開いたレジストリエディタがアクティブになります。

vbaコードで起動だけではなく、手前に表示させるにはどうすればいいですか?

Aベストアンサー

そちらのOSは、Vista 以降なのではありませんか?
既定値のままなら UAC によってブロックされているはずです。
イミディエイトウィンドウで確認した限りですが
createobject("shell.application").shellexecute "regedit.exe"
を確かめてみてください。

VBAでレジストリエディタを開く必要があるのかな?
http://msdn.microsoft.com/ja-jp/library/cc364417.aspx
余計なお世話かもしれん。


人気Q&Aランキング

おすすめ情報