- ベストアンサー
OpenOffice表計算のマクロ(Basic)で選択中の結合セルからサイズを取得する方法について教えてください
事情によりOpenOfficeの表計算ソフト上で簡単なマクロを作らなければならなくなったのですが、私は満足なプログラミングの知識をもっていず、また身近に頼れる詳しい人もいずに困り果ててしまいました。 マクロの内容は選択中の結合されたセルのサイズ(幅と高さ)にあわせて、はみ出さない範囲で拡大した画像を挿入するというものです。 ネットで検索するなどして調べたOOoBasicマクロの情報を元につぎはぎして、理解できないなりになんとか選択範囲のサイズを取得してあわせて拡大/縮小する所まではいきました。しかし、結合されたセルを選択している場合には、結合されたセルの中の一番左上の単一セルのサイズを取得してしまい、結合されたセル全体のサイズがどうしても取得できないという問題が残ってしまいました。 詳しく書くと、 Dim oSelection As Object oSelection = ThisComponent.CurrentSelection Dim w_len As Long Dim h_len As Long w_len = oSelection.size.Width h_len = oSelection.size.Height としたいうようになっていて、A1からC3まで結合されたセルを選択してマクロを実行するとA1の単一セルのサイズがw_lenとh_lenに入ってしまいます。 MicrosfOfficeに比べてOOoは情報が少なく、またあったとしても分かっている人向けに書いてあることが多く、関係がありそうなものを探しては闇雲にテストしてエラーを返され続けることに疲れました。 なにか良い方法があれば教えてください。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- new-OKWave
- ベストアンサー率68% (60/87)
- new-OKWave
- ベストアンサー率68% (60/87)
関連するQ&A
- 選択範囲のセルを1行ずつ結合するマクロ
こんにちは、いつも参考にさせていただいております。 セルを範囲選択し、 1行ごとに結合させる方法はないでしょうか。 手作業ではなくマクロでの方法を探しています。 イメージとしては (1)範囲選択する (2)マクロ実行する →列の範囲を1行ずつ、選択している範囲だけ各行を結合 図も添付いたしますので、どうかアドバイス・ヒント頂けないでしょうか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 結合セルの値取得について
お世話になります、 (環境、VISTA&EXCEL2000) 結合セルに名前をつけて その値をマクロで取得したいのですが エラーになります。 結合セルには結合する前に名前をつけてから 結合してあります。 Dim ws As Worksheet ' On Error GoTo errTrap Set ws = Worksheets("xxxxx") '(1) ws.Range("DenDate").Value = Date '(2) MsgBox ws.Range("DenDate").Value (2)で「型が一致しません」になります。 宜しくお願いいたします。
- ベストアンサー
- Visual Basic
- セル結合をマクロで行ないたい(その2)
度々お世話になっております。 エクセル2000ですが、例えばA1:C10の範囲を選択した状態で、一発で横方向のみのセル結合をする(A1,B1,C1を結合、A2,B2,C2を結合、・・・A10,B10,C10を結合)マクロは可能でしょうか?
- ベストアンサー
- オフィス系ソフト
- Excel(セルの結合マクロ)
いつもお世話になっております。 Excelのマクロで、選択範囲の中で、下のセルが空白のものは、上のセルと結合されるマクロを作りたいと考えています。 (例1:A1セルに”TEST”が入力されており、A2,A3セルが空白として、A1:A3を選択し、マクロを実行するとA1からA3がセル結合される 例2:A1に”TEST2”B2に"TEST3"が入力されており、A1:B3を選択すると、A1からA3が結合され、B2とB3も結合される) 説明が下手で申し訳ないのですが、お力を貸していただけませんでしょうか? よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 【Excelマクロ】 セルの色取得
古いファイルを加工することが多々あり、セルに塗られている色を調べる(セルの書式設定→塗りつぶし→その他の色→ユーザー設定)のが非常に面倒です。 RGB値をマクロで表示させる方法を見つけたものの、セルが指定(A1/A2/B1)されています。 <1つ右> Sub 色情報取得() Dim r As Long Dim g As Long Dim b As Long n = Range("A1").Interior.Color r = n \ 256 ^ 0 Mod 256 g = n \ 256 ^ 1 Mod 256 b = n \ 256 ^ 2 Mod 256 Range("A2") = r & "," & g & "," & b End Sub <1つ左> Sub 色情報取得() Dim r As Long Dim g As Long Dim b As Long n = Range("A1").Interior.Color r = n \ 256 ^ 0 Mod 256 g = n \ 256 ^ 1 Mod 256 b = n \ 256 ^ 2 Mod 256 Range("B1") = r & "," & g & "," & b End Sub 調べたいセルにカーソルを置いた状態で実行するマクロをご教示ください。 希望1.画像のように1つ右 or 1つ左、もしくはn個右 or n個下など、表示させたいセルを自由に設定したい 希望2.複数セルを一括で処理したい よろしくお願い致します。
- ベストアンサー
- Excel(エクセル)
- セル解除後、各行に値をコピーし結合するマクロ
A1からC3のセルが結合しており、 そのセル結合を解除すると、A列のみ値がコピーされる。 コピーした後、各行ごとにセルを結合していく…… という処理をしたいと思い、 調べて下記のマクロまでなんとかこぎつけました。 Sub セル結合() Dim date1 As Variant Dim range1 As Range Application.DisplayAlerts = False For Each range1 In Selection.Rows If range1(1).MergeCells = False Then range1(1).Merge Else date1 = Selection.Rows(1).Value With range1 .UnMerge .WrapText = False .ShrinkToFit = False Selection.Value = date1 End With End If Next range1 End Sub ※実行範囲に関しては、 任意選択をした範囲にしたいため、 range(1)にて処理を行いました。 困っているのは、上記のマクロを実行すると、 最初の行のみ結合できないということ。 もうひとつが、 セル結合をしない時に値を左端にコピーすると、 文字が自動縮小されてしまいます。 縮小しないようにするには、 どのような処理を入れたら良いでしょうか? お力添え頂けますと幸いです。 よろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- 選択したセルの座標の取得
選択したセルの座標の取得 sheet1 A B C 1 2 α 3 sheet1のB2にはαという文字が挿入されており、ハイパーリンクの設定がしてあります。 B2をクリックするとsheet2に移行します。 sheet1で選択したセルの位置を取得したいのですが、上手くいきません。 ご教授の程、宜しくお願いします。 現在の記述は以下の通りです。 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim gyo As Long Dim ret As Long gyo = ActiveCell.Row ret = ActiveCell.Column MsgBox "行番号" & gyo & "列番号" & ret End Sub Sheet1のB2を選択して、Sheet2に移行した時に、Msgboxには、 行番号2 列番号2 というようにしたいのです。
- ベストアンサー
- オフィス系ソフト
- 「Wordの表のセルの結合情報」をVBAで取得する
「Wordの表のセルの結合情報」をVBAで取得する方法 EXCELのVBAであれば、下記サイトの下記マクロで判断できるようなのですが、 Word VBAには、「MergeCellsプロパティ」が無くて、駄目でした。 別の方法で判定出来ない物でしょうか? http://officetanaka.net/excel/vba/tips/tips50.htm ---------------------------------------------------------------------- Sub Sample2() Dim i As Long, buf As String For i = 2 To 9 If Cells(i, 1).MergeCells Then buf = buf & Cells(i, 1).Address(0, 0) & "-->結合されています" & vbCrLf Else buf = buf & Cells(i, 1).Address(0, 0) & "-->結合されていません" & vbCrLf End If Next i MsgBox buf End Sub ヘルプを調べましたが、ざっと見たところ載っていないように思います。 経験あるかた居たらご教授頂けると助かります。
- 締切済み
- その他(プログラミング・開発)
- マクロ 結合セルへ値のみ貼り付けるにはどうしたらよいでしょうか。
マクロは初心者で、まだまだ勉強しているところです。 シート名「入出金履歴」のデータを顧客コードごとに分かれている別シートへデータを振り分けて貼り付ける、もしくは反映させたいのですが、貼り付け先のセルがシートの都合上、結合セルになっており、下記のマクロだと当然ながらエラーになってしまいます。結合セルをまず、解除してから貼り付けようと思ったのですが、うまくいかず、困っています。 コピー先の結合状態は、7行目から、列A:C、列D:E、列F:H と、3列になるように結合されています。結合されている行の終わりは、A:C(結合されている)列に「合計」の値が入っているセルの行、H列まで、3列になるよう結合されています。 解除する以外に、良い方法があれば是非教えていただきたいです。 よろしくお願いします。 Sub samplea() r1 = ActiveCell.Row r2 = r1 + Selection.Rows.Count - 1 Dim myRange As Range Dim s_no As String For i = r1 To r2 s_no = Cells(i, 2) Range(Cells(i, 4), Cells(i, 9)).Select Selection.Copy Sheets(Format(s_no)).Select Set myRange = Columns("a:c").Find(what:="合計") If myRange Is Nothing Then Debug.Print "Not Fount" Else myRange.Select Selection.End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues Application.CutCopyMode = False Sheets("入出金履歴").Select End If Next End Sub
- ベストアンサー
- Visual Basic
- エクセル マクロ セルを縦に結合したいです。
現在、Visual Basicにてコードを作成中です。(初心者です。) 現時点での出来ること 5列目の2~10行目に何か入力されれば その隣のセルに「お疲れ様です」と入力される(ここまではコード出来てます。) 例:B5セルに何か入力があればC5セルに「お疲れ様です」と入力される。 C5セルに何か入力あればD5セルに「お疲れ様です」と入力される・・・ といった内容です。 そのあとやりたい事(ここからコード出来ません) B5セルに何か入力があればC5セルに「お疲れ様です」と入力された後 C5~10行目を縦に結合し、文字を縦書きにする。 C5セルに何か入力があればD5セルに「お疲れ様です」と入力された後 D5~10行目を縦に結合し、文字を縦書きにする・・・ といった内容です。 一応コード下記に載せます。 Sub macro1() Dim a As Variant Dim i As Long Set a = Worksheets("sheet1") For i = 10 To 2 Step -1 If Len(a.Cells(5, i).Value) > 0 Then 'もし、5列目の2~10行目に何か入力されれば a.Cells(5, i).Offset(0, 1).Value = "お疲れ様です" Exit For End If Next i End Sub すいませんがコード記載よろしくお願いいたします。 回答よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
Wendy02さん、こんにちは。 長文にわたってご回答していただきありがとうございます。 >Novel 版は、いかがですか? MicrosoftOfficeとの互換性を高めた、そのようなエディションがあるのですね。知りませんでした、参考になります。 >OOoBasic に関する限りは、VBAの中級レベル以上の移植は、~~それに関わる時間と労力なら、他の言語を深めたほうが無駄が少ないように思います。 そうですねー。僕も今回初めて関わってみて、VBAと比べてなんかこういちいちわかり難いというか、標準で搭載されている記録マクロもコードに使えないよく分からないもので・・・(探してみて再利用に向いた記録マクロが見つかりましたが) とにかく、プログラミングの素人が気軽に手を出せるものではないというのは痛いくらいに思い知りました。 それで、大変申し上げにくいのですが先ほど問題となる「選択中の結合セルからサイズを取得する方法」が自己解決いたしました。 セルカーソルというものを使うことでOOoBasicで実現できるようです。 (自分でもほとんど理解せずトライ&エラーでとりあえず動作したというような状況で、これが良いやり方なのかはわかりませんが) '------------------------------------------- Sub mergedArea_Size Dim oSheet As Object Dim oCursor As Object Dim oSelection As Object oSheet =ThisComponent.CurrentController.ActiveSheet oSelection = ThisComponent.CurrentSelection oCursor = oSheet.createCursorByRange( oSelection ) oCursor.collapseToMergedArea() Dim w_len As Long Dim h_len As Long w_len = oCursor.Size.Width h_len = oCursor.Size.Height MsgBox "Width:" & w_len & " Height:" & h_len End Sub '------------------------------------------- ご回答していただいた、#1さん、Wendy02さん、ほんとうにありがとうございました。