- ベストアンサー
VBA Target.ColumnをRangeへ
Excel VBAについてお尋ねいたします。 Excel VBAにて現在選択しているセルの列番号をTarget.Columnで取得することが出来ますが、Target.Columnで取得した列番号(数字)をRange方式のアルファベットに変換する方法はございますでしょうか? Range形式のアルファベットに変換してから、セルに=○○という数式を出力させたいです。 選択する列は、N列~右端までの間です。 取得した列番号を26で割って26で割って26で割って…を繰り返して、商と余でアルファベットを形成するという方法を考えましたが、その場合でもどうやって記述すればいいですか?
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- エクセルVBA Columnプロパティで・・・
エクセル2002使用です。 FindメソッドでRangeオブジェクトを取得し、Columnプロパティでそのオブジェクトの列番号をを取得し、Columnsプロパティーでその列番号が最後になる複数行を取得して、その取得した範囲の空白セルを削除しようとしています。 Dim findcell as Range Dim cl as String Set findcell = Rows(1).Find(What:="賞") cl = findcell.Column Columns(3:cl).SpecialCell(xlCellTypeBlanks).Delete Columns(3:cl)でエラーとなってしまいます。 Columnsプロパティーで複数行を取得するときは、アルファベットの列番号を指定しなければならないと思うのですが、Columnプロパティーでは、数字で列番号を取得してしまうため困っています。 Columnプロパティーでアルファベットを取得する方法 または Columnsプロパティーで複数行を数字の列番号で取得する方法で何か良い方法はありますでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA セルの値を変更後にVBA作動
Excel VBAを活用して、特定のセルの値が変更されたときに、VBA処理を発動させることになりました。 処理といたしましては、C列(3列目)の4行目以下の空白セルに数値を入力するか、セルに入力されている数値を変更した場合にVBAを発動させたいです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub 上記のコードを実行してみたところ、3列目(C列)の4行目を選択した段階でVBAが作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?
- ベストアンサー
- Visual Basic
- Excel VBA Rangeについて
下記のコードは、あるテキストに掲載されていたコードです。 D5に番号を入力すると、F5に文字が表示されるというようなコードです。 下記コードのRange("顧客コード")とは何を意味するのでしょうか? Worksheets("顧客")の意味は分かりますが、私の知識ではRange(" ")の中に入るのは、A1などしか分かりません。 よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Integer, myRange As Range Set myRange = Worksheets("顧客").Range("顧客コード") With Target '変更されたセルがD5だったら If .Row = 5 And .Column = 4 Then '顧客コードの位置を取得 r = Application.WorksheetFunction _ .Match(Target.Value, myRange, 0) 'セルに顧客名を表示 Range("F5") = Worksheets("顧客").Range("B1").Offset(r - 1).Value End If End With End Sub
- ベストアンサー
- オフィス系ソフト
- rangeに変数代入でエラー
VBA初心者です。お願いします。 下記のように最終セルのアドレスを取得し、セル範囲を選択したいのですがたのですが、エラーが出てしまいます。どなたか助けてください。 ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate l = ActiveCell.Column 'アクティブセルの列番号 d = ActiveCell.Row 'アクティブセルの行番号 ad = ActiveCell.Address 'アクティブセルのアドレス Range("A1:ad").Select
- 締切済み
- Visual Basic
- VBAのRangeについて
VBAのRangeについて質問があります。 以下のような表があった場合、VBAにて動的に図を作成したいのですが、Rangeの使い方がよく分かっておりません。 A列 B列 C列 D列 E列・・・ -------------------------------------------- りんご バナナ すいか ・・・ A店 200円 100円 500円 ・・・ B店 180円 130円 800円 ・・・ C店 220円 150円 650円 ・・・ やりたいことは、 ・A列とB列を選択してグラフを作成 ・A列とC列を選択してグラフを作成 ・A列とD列を選択してグラフを作成 ・・・・・・ というようなグラフを作成したいと考えております。(列は動的です。) 【駄目だった例】 Range(Range(Cells(1, 1), Cells(4, 1)), Range(Cells(1, 3), Cells(4, 3))).Select このように書くと、A列からC列まで全て選択されてしまいます。 (A列とC列だけ選択して、B列は除外したい。) ご存知の方がおりましたら、回答していただけると助かります。
- ベストアンサー
- Visual Basic
- エクセルVBAについて
エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub '●複数セル選択は無視 If Target.Row <> 1 Then Exit Sub '●1行目以外の選択は無視 If Target.Column > 6 Then Exit Sub '●F列目以降の選択は無視 If Target.Value = "" Then Exit Sub '●選択セルが未入力なら無視 Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- VBA Rangeの使い方
こんにちは、VBA初心者です。 Range("D68:D69").Select これを、「アクティブのあるひとつのセル(この場合はD68)の、下のセル(D69)を選択する」 としたいのですが、どう書いたらいいのか解りません。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル VBA で列番号を足す方法は?
こんにちは。大変お世話になっています。 Set btd = Range("d2:z2").Find(bmd) といったVBAを使用し、あるセル番地を抜き出しました。 そのセルの列番号のみを抜き出して、そこから列番号を右へいくつか動かしたいのですが、その方法がわかりません。 別の定義で出した行をgとして Cells(g, btd.Column)でセルの指定をしました。 このセルがa1だとします。 次の作業として、b1のセルを指定したいのですが、その方法がわからないのです。 b=Cells(g, btd.Column) と定義して、 b.Offset(0, 1).Value などと書いてもエラーになってしまいます。 行番号なら数字を足したり引いたりすればできたのですが、アルファベットの列番号の場合はどうしたら良いのでしょうか? すみませんがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 塗りつぶしをしたセル色を特定のセルのフォント文字に
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Protect UserInterfaceOnly:=True Dim mycolor If Target.Column Mod 1 = 0 And Target.Column >= 4 And Target.Column <= 24 Then mycolor = Target.Interior.ColorIndex Range("B5:B38").Font.ColorIndex = xlAutomatic Range("B" & Target.Row).Font.ColorIndex = mycolor Else mycolor = xlAutomatic Range("B5:B38").Font.ColorIndex = xlAutomatic End If End Sub お世話になります、このコードは列D~Uまでの4~24列の特定の箇所のセルを塗りつぶしにしています。 その塗りつぶしたセルを選択されているとB5~B38に記入されている文字が塗りつぶされた文字と一緒になると言うVBAです。 質問がいくつかあります。 (1)D列~U列の38行目以降のセルを選択すると「FontクラスのColor Indexプロパティを設定出来ません。」となります。多分B38以降にはセルが塗りつぶしされておらず、B38以降に文字が書かれていないのでエラーとなってしまうのではないかと思います。これの解決策はありますか? (2)E5~E38のセルのどこでも良いので数字を入力したら、E5~E38が同じ数字に自動変換するVBAは出来るのでしょうか? (3)同じようにT5~T38のセルのどこでも良いので数字を入力したら、T5~T38が同じ数字に自動変換するVBAは出来るのでしょうか? (4)同じようにD6~D38のセルのどこでも良いので数字を入力したら、D6~D38が同じ数字に自動変換するVBAは出来るのでしょうか?
- ベストアンサー
- Excel(エクセル)
- EXCEL-VBAでRangeの末端の座標値を取得できますか?
Activecell.row / column でセルの座標値が取得できますが、範囲(例えば a1:c5 )を選択している時の、rangeの末端の座標 (この場合では c5 = ????.row=5,????.column=3) を取得する方法をご存知の方、教えてください。
- ベストアンサー
- オフィス系ソフト